需要的库:zipfile

1.压缩多个文件,指定带目录层数

要创建你自己的压缩 ZIP 文件,必须以“写模式”打开 ZipFile 对象,即传入'w' 作为第二个参数(这类似于向 open()函数传入'w',以写模式打开一个文本文件)。

如果向 ZipFile 对象的 write()方法传入一个路径,Python 就会压缩该路径所指 的文件,将它加到 ZIP 文件中。write()方法的第一个参数是一个字符串,代表要添 加的文件名。第二个参数是“压缩类型”参数,它告诉计算机使用怎样的算法来压 缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED(这指定了 deflate 压缩 算法,它对各种类型的数据都很有效)。

import os
import zipfile


def zip_compress(zip_file, file_deep):
    z = zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED)
    for file_path in file_deep:
        # print(file_path)
        for dirpath, dirnames, filenames in os.walk(file_path):
            # deeps压缩深度2代表2层目录,1代表1层目录
            deeps = file_deep.get(file_path)
            split_file = '\\'.join(dirpath.split('\\')[-deeps:])
            # print(split_file)
            for fil in filenames:
                file_full_path = os.path.join(dirpath, fil)
                compress_file = os.path.join(split_file, fil)
                # print(compress_file)
                # file_full_path是文件的全路径,compress_file是需要压缩后展现的文件名,
                z.write(file_full_path, compress_file)
    z.close()
    print("压缩成功至→%s" % zip_file)


final_daily_reporting_path = r"C:\Users\Administrator\Desktop\新版银行流水\每日资金报备分析\每日资金报备分析2021年10月16日"
two_day_file = r"C:\Users\Administrator\Desktop\新版银行流水\对账单-按日\对账单-按日2021年10月16日"
fianl_day_liu_dui_path = "C:\\Users\\Administrator\\Desktop\\新版银行流水\\对账单-统一格式-按日\\2021年10月16日\\"

# path = r"C:\Users\Administrator\Desktop\新版银行流水\对账单-统一格式-按小时\2021年9月1日_17时"
# path2 = r"C:\Users\Administrator\Desktop\新版银行流水\对账单-按小时\2021年9月1日_17时"
zip_path = 'F:\\新建文件夹\\zipfile.zip'
zip_compress(zip_path, file_deep={final_daily_reporting_path: 2, two_day_file: 3, fianl_day_liu_dui_path: 3})

 2.解压 文件

ZipFile 对象的 extractall()方法从 ZIP 文件中解压缩所有文件和文件夹,放到当 前工作目录中。 

import zipfile

zip_file = zipfile.ZipFile('zfile.zip')
# 解压
zip_extract = zip_file.extractall()
zip_extract.close()