(原创)python zipfile实现压缩整个目录和子目录

  • python zipfile实现压缩整个目录和子目录
    • zipfile背景简介
    • 核心原理DFS
    • 代码实现

python zipfile实现压缩整个目录和子目录


zipfile背景简介

zipfile是python提供的一个简单高效的模块。可以用很迅速的方法来进行文件压缩和解压的过程。
细节性的内容可以查看zipfile的文档
zipfile文档
这里先介绍几个简单的方法

 f = zipfile.ZipFile(output_path,'w',zipfile.ZIP_DEFLATED)
 #参数说明:第一个参数为输出的路径,文件读写,压缩方式
 f.write(path)
 #path是相对路径
 f.close()
 #一个关键方法,只有调用了close之后才会保证完成压缩

核心原理DFS

利用的是对目录进行深度优先遍历,首先把第一级目录中的文件进行遍历,如果是文件,则把它连同当前路径一起加入result(list),如果是子目录,则在整个目录上继续DFS。直到所有的文件都被加入。

代码实现

def dfs_get_zip_file(input_path,result):

#
    files = os.listdir(input_path)
    for file in files:
        if os.path.isdir(input_path+'/'+file):
            dfs_get_zip_file(input_path+'/'+file,result)
        else:
            result.append(input_path+'/'+file)

def zip_path(input_path,output_path,output_name):

    f = zipfile.ZipFile(output_path+'/'+output_name,'w',zipfile.ZIP_DEFLATED)
    filelists = []
    dfs_get_zip_file(input_path,filelists)
    for file in filelists:
        f.write(file)
    f.close()
    return output_path+r"/"+output_name
 if __name__ == '__main__':
     zip_path(r"./working",'D:','wok.zip')

你可能感兴趣的:(python&爬虫)