摘要:import zipfilewith zipfile.ZipFile('archive.zip', 'w', zipfile.ZIP_DEFLATED) as zip_file: zip_file.write('1.txt', arcname='files/f
Python 提供了一个 zipfile 模块,可简化 ZIP 压缩文件操作。在本文中,将介绍在 Python 中使用 zipfile 模块解压缩文件的方法。
可以使用 Python 脚本来自动备份重要数据。通过使用 zipfile 模块,将多个文件和目录压缩到备份路径,实现数据备份。
zipfile.ZipFile 方法:
以指定的模式打开 ZIP 文件。模式包括读取 ('r')、写入 ('w')、附加 ('a') 等。如果压缩文件不存在则自动创建文件。
zipfile.write 方法:
将文件写入 ZIP 压缩文件。
import zipfilewith zipfile.ZipFile('archive.zip', 'w', zipfile.ZIP_DEFLATED) as zip_file: zip_file.write('1.txt', arcname='files/file1.txt') zip_file.write('2.txt', arcname='files/file2.txt')print("ZIP文件:'archive.zip' 创建成功")以上示例,将1.txt、2.txt 两个文件压缩到 archive.zip 文件。其中参数 arcname 为指定存档名称路径,即将1.txt、2.txt 两个文件改名为 file1.txt、file2.txt 存放到 file 文件夹并压缩。
如果将文件添加到已存在的 zip 压缩文件中,需要使用 write 方法的附加模式('a'),因为写入 模式('w')会重建覆盖现有压缩文件。
import zipfilewith zipfile.ZipFile('archive.zip', 'a', zipfile.ZIP_DEFLATED) as zip_file: zip_file.write('3.txt') zip_file.write('4.txt')print("ZIP文件:'archive.zip' 创建成功")import osimport zipfiledef zip_folder(folder_path, output_zip_path): # 创建一个 ZipFile 对象 with zipfile.ZipFile(output_zip_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) # 将文件添加到 ZIP 文件中,使用相对于指定文件夹的相对路径 arcname = os.path.relpath(file_path, start=folder_path) zipf.write(file_path, arcname)# 指定要压缩的文件夹路径和输出的 ZIP 文件路径folder_to_zip = 'file/' output_zip = 'archive.zip'# 调用函数进行压缩zip_folder(folder_to_zip, output_zip)以上示例,将当前路径中 file 文件夹中的所有文件压缩到 archive.zip 压缩文件中。
将所有文件从 archive.zip 解压到名为 file 的文件夹中。
使用读取模式 ('r') 打开现有的 ZIP 文件。
ZipFile.extractall 方法:
将 ZIP 文件中的所有文件提取到指定路径。
import zipfilewith zipfile.ZipFile('archive.zip', 'r') as zip_file: zip_file.extractall('file')print("解压文件成功。")将指定文件从 archive.zip 中解压。
ZipFile.extract 方法:
将 ZIP 文件中的单个文件解压到指定路径。
import zipfilewith zipfile.ZipFile('archive.zip', 'r') as zip_file: zip_file.extract('1.txt', 'file')print("解压文件成功。")ZipFile.read 方法:
读取文件内容。
ZipFile.writestr 方法:
将字符串数据写入文件。
zip_file.namelist 方法:
压缩文件中所有文件名列表
import zipfileimport os with zipfile.ZipFile('archive.zip', 'r') as zip_file: all_files = zip_file.namelist # 获取压缩文件中文件列表 # 生成保留文件列表 files_to_keep = [file for file in all_files if file != '2.txt'] # 将保留文件压缩到新压缩文件 with zipfile.ZipFile('archive2.zip', 'w', zipfile.ZIP_DEFLATED) as new_zip_file: for file in files_to_keep: data = zip_file.read(file) new_zip_file.writestr(file, data)from zipfile import ZipFile import datetime file_name = "archive.zip"with ZipFile(file_name, 'r') as zip_file: for info in zip_file.infolist: print(info.filename) print('\tModified:\t' + str(datetime.datetime(*info.date_time))) print('\tSystem:\t\t' + str(info.create_system) + '(0 = Windows, 3 = Unix)') print('\tZIP version:\t' + str(info.create_version)) print('\tcompressed:\t' + str(info.compress_size) + ' bytes') print('\tUncompressed:\t' + str(info.file_size) + ' bytes')运行结果:
files/file1.txt Modified: 2024-12-27 16:56:16 System: 0(0 = Windows, 3 = Unix) ZIP version: 20 Compressed: 6 bytes Uncompressed: 4 bytesfiles/file2.txt Modified: 2024-12-27 16:56:24 System: 0(0 = Windows, 3 = Unix) ZIP version: 20 Compressed: 5 bytes Uncompressed: 5 bytes来源:信息科技云课堂