摘要
本文介绍了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、资讯、面试等多个领域。无论是前沿科技的探索,还是实用技巧的总结,我们都致力于为大家呈现有价值的内容。期待与你共同进步,开启技术之旅。