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

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')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值