Python常用系统类库之zipfile压缩

78 阅读2分钟

摘要

本文介绍了python的自带类库zipfile,可用于文件的压缩解压缩,同时因为是操作文件夹,所以需要用到os类库,让我们看代码。

前提条件

  • 导入类库
import zipfile
import os
  • 设置文件编码utf-8

图片

文件压缩

1.将文件夹中的文件添加到ZIP归档文件中

def compress_folder_to_zip(folder_path, zip_file_name):
    with zipfile.ZipFile(zip_file_name, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                file_path = os.path.join(root, file)
                # 将文件添加到归档文件中,保留相对路径
                zipf.write(file_path, os.path.relpath(file_path, os.path.dirname(folder_path)))

# 使用示例
folder_to_compress'测试文件夹'  # 要压缩的文件夹
zip_file_name'我的压缩包.zip'   # 输出的 ZIP 文件名
compress_folder_to_zip(folder_to_compress, zip_file_name)

2.将单个文件添加到ZIP归档文件中

def compress_file_to_zip(file_path, zip_file_name):
    with zipfile.ZipFile(zip_file_name, 'w', zipfile.ZIP_DEFLATED) as zipf:
        zipf.write(file_path, os.path.basename(file_path))

# 使用示例
file_to_compress = '测试压缩1.txt'  # 要压缩的文件
zip_file_name = '测试压缩1.zip'     # 输出的 ZIP 文件名
compress_file_to_zip(file_to_compress, zip_file_name)

文件解压

1.将ZIP归档文件中的所有文件解压缩到指定文件夹

def extract_zip_to_folder(zip_file_name, output_folder):
    with zipfile.ZipFile(zip_file_name, 'r') as zipf:
        for file_info in zipf.infolist():
            # 使用正确的编码解码文件名
            file_name = file_info.filename.encode('cp437').decode('gbk')  # 假设文件名是 GBK 编码
            # 替换文件名
            file_info.filename = file_name
            # 解压文件到指定文件夹
            zipf.extract(file_info, output_folder)

# 使用示例
zip_file_to_extract'测试解压.zip'  # 要解压缩的 ZIP 文件
output_folder'测试'          # 解压缩后的输出文件夹
extract_zip_to_folder(zip_file_to_extract, output_folder)

2.查看ZIP归档文件中的文件列表

def list_zip_files(zip_file_name):
    with zipfile.ZipFile(zip_file_name, 'r') as zipf:
        for file_info in zipf.infolist():
            # 使用正确的编码解码文件名
            file_name = file_info.filename.encode('cp437').decode('gbk')  # 假设文件名是 GBK 编码
            # 替换文件名
            file_info.filename = file_name
            print(file_info.filename)

# 使用示例
zip_file_to_list'测试解压.zip'  # 要列出文件的 ZIP 文件
list_zip_files(zip_file_to_list)

效果展示

图片

总结

以上我们了解了python自带类库zipfile压缩解压缩的使用方式,整体体验不错。

关注公众号:咖啡Beans

在这里,我们专注于软件技术的交流与成长,分享开发心得与笔记,涵盖编程、AI、资讯、面试等多个领域。无论是前沿科技的探索,还是实用技巧的总结,我们都致力于为大家呈现有价值的内容。期待与你共同进步,开启技术之旅。