当前位置:首页 > Python > 正文

Python文件压缩教程:使用zipfile模块轻松压缩与解压

Python文件压缩教程

使用zipfile模块轻松实现文件压缩与解压

为什么需要文件压缩?

文件压缩是软件开发中常见的需求,它可以帮助我们:

  • 节省存储空间
  • 减少文件传输时间
  • 将多个文件打包为一个文件
  • 保护文件内容

Python内置的zipfile模块提供了强大的ZIP文件处理功能,无需额外安装任何库。

基本压缩操作

压缩单个文件

import zipfile

# 创建新的ZIP文件
with zipfile.ZipFile('compressed.zip', 'w') as zipf:
    # 添加文件到压缩包
    zipf.write('document.txt', arcname='doc.txt')
    
print("文件压缩完成!")

压缩整个目录

import os
import zipfile

def zip_directory(folder_path, output_path):
    with zipfile.ZipFile(output_path, '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)
                # 在压缩包中创建相对路径
                arcname = os.path.relpath(file_path, folder_path)
                zipf.write(file_path, arcname)

# 压缩my_folder目录到archive.zip
zip_directory('my_folder', 'archive.zip')

解压文件操作

解压整个ZIP文件

import zipfile

with zipfile.ZipFile('archive.zip', 'r') as zipf:
    # 解压所有文件到指定目录
    zipf.extractall('extracted_files')
    
print("文件解压完成!")

解压特定文件

import zipfile

with zipfile.ZipFile('archive.zip', 'r') as zipf:
    # 获取ZIP文件中的文件列表
    file_list = zipf.namelist()
    print("压缩包中的文件:", file_list)
    
    # 解压特定文件
    if 'important_document.txt' in file_list:
        zipf.extract('important_document.txt', 'important_files')

高级技巧

添加压缩密码

import zipfile
import zlib

with zipfile.ZipFile('secure.zip', 'w') as zipf:
    zipf.write('secret.txt', arcname='secret.txt')
    # 设置密码
    zipf.setpassword(b'my_password')

压缩级别设置

import zipfile

# 使用不同的压缩级别
with zipfile.ZipFile('compressed_fast.zip', 'w', compression=zipfile.ZIP_STORED) as zipf:
    zipf.write('file.txt')  # 不压缩
    
with zipfile.ZipFile('compressed_normal.zip', 'w', compression=zipfile.ZIP_DEFLATED) as zipf:
    zipf.write('file.txt')  # 标准压缩
    
with zipfile.ZipFile('compressed_max.zip', 'w', compression=zipfile.ZIP_BZIP2) as zipf:
    zipf.write('file.txt')  # 最大压缩

最佳实践

  • 使用with语句确保文件正确关闭
  • 压缩大文件时使用ZIP_DEFLATED压缩方式
  • 解压文件前检查目标目录是否存在
  • 处理压缩文件时使用异常处理
  • 为压缩文件添加有意义的名称和日期后缀

Python压缩操作速查表

压缩操作

ZipFile('file.zip', 'w') - 创建压缩文件

write('file.txt') - 添加文件

writestr() - 添加字符串内容

解压操作

ZipFile('file.zip', 'r') - 打开压缩文件

extractall() - 解压所有文件

extract('file.txt') - 解压特定文件

信息获取

namelist() - 文件列表

infolist() - 详细信息

getinfo() - 获取单个文件信息

发表评论