python zipfile 压缩文件夹的方法

这个Python脚本演示了如何利用os和zipfile模块遍历指定文件夹及其子文件夹,并将所有文件压缩成ZIP格式。通过for循环遍历areas列表,对每个area对应的文件夹进行压缩,生成的ZIP文件保存在相同路径下,文件名为area.zip。
import os
import zipfile


# 这一部分只是用来解释os.walk的用法,在该脚本运行时不需执行------start
dirpath = r'f:\0105\Europe_output\chinaocean'  # 这里指定需要压缩的文件夹
for path, dirnames, filenames in os.walk(dirpath):  # 遍历文件夹及下面的子文件夹,path、dirnames、filenames依次是路径、目录名称、文件名称。
# path是当前路径,dirnames是在当前路径下有文件夹时,给出文件夹名的列表,filenames是在当前路径下有文件时,给出文件名的列表
# 之后进入列表dirnames中的第一个文件夹,重复上述过程。
    # 下面print出来可以更好体会os.walk的用法
    print(path)
    print(dirnames)
    print(filenames)
    fpath = path.replace(dirpath, '')  # 把主路径去掉,只保留分路径,这样在压缩文件时就不会把需要压缩的文件夹的上层路径压缩进去
    print(fpath)
# 这一部分只是用来解释os.walk的用法,在该脚本运行时不需执行------end


def getZipDir(dirpath, outFullName):
    """
    压缩指定文件夹
    :param dirpath: 目标文件夹路径
    :param outFullName: 压缩文件保存路径+xxxx.zip
    :return: 无
    """
    zip = zipfile.ZipFile(outFullName, "w", zipfile.ZIP_DEFLATED)  # outFullName为压缩文件的完整路径
    for path, dirnames, filenames in os.walk(dirpath):
        # 去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩
        fpath = path.replace(dirpath, '')

        for filename in filenames:
            zip.write(os.path.join(path, filename), os.path.join(fpath, filename))
    zip.close()


if __name__ == '__main__':
    areas = ['chinaocean', 'NWPacific', 'NEPacific', 'SWPacific', 'SEPacific', 'IndianOcean']
    for area in areas:
        getZipDir('F:/0105/json_output/' + area, 'F:/0105/json_output/' + area + '.zip')

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值