在Python中,可以使用zipfile
模块来实现文件的压缩和解压缩。zipfile
模块提供了创建、读取、写入和追加ZIP文件的功能。下面是一个简单的示例,展示如何使用Python实现文件压缩和解压缩工具。
以下代码展示了如何将指定目录下的文件压缩到一个ZIP文件中:
import os
import zipfile
def compress_folder(folder_path, output_zip):
# 创建一个ZIP文件
with zipfile.ZipFile(output_zip, '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)
# 将文件添加到ZIP文件中
zipf.write(file_path, os.path.relpath(file_path, folder_path))
# 示例:压缩当前目录下的所有文件到 'archive.zip'
compress_folder('.', 'archive.zip')
以下代码展示了如何从ZIP文件中解压缩文件到指定目录:
import zipfile
def extract_zip(zip_path, extract_to):
# 打开ZIP文件
with zipfile.ZipFile(zip_path, 'r') as zipf:
# 解压缩所有文件到指定目录
zipf.extractall(extract_to)
# 示例:解压缩 'archive.zip' 到 'extracted_files' 目录
extract_zip('archive.zip', 'extracted_files')
如果你只需要压缩或解压缩单个文件,可以使用以下代码:
import zipfile
def compress_file(file_path, output_zip):
with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:
zipf.write(file_path, os.path.basename(file_path))
# 示例:压缩 'example.txt' 到 'example.zip'
compress_file('example.txt', 'example.zip')
import zipfile
def extract_file(zip_path, file_name, extract_to):
with zipfile.ZipFile(zip_path, 'r') as zipf:
zipf.extract(file_name, extract_to)
# 示例:从 'example.zip' 中解压缩 'example.txt' 到当前目录
extract_file('example.zip', 'example.txt', '.')
zipfile.ZIP_DEFLATED
使用DEFLATE压缩算法,这是ZIP文件的默认压缩算法。你也可以使用 zipfile.ZIP_STORED
来存储文件而不进行压缩。你可以根据需要扩展这个工具,例如:
tarfile
模块来处理TAR文件,或者使用第三方库如py7zr
来处理7z格式。zipfile
模块的setpassword
方法可以为ZIP文件设置密码。通过这些方法,你可以轻松地在Python中实现文件的压缩和解压缩功能。