Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menggunakan modul pakej pemampatan zip dalam Python
Format fail ZIP ialah standard pengarkiban dan pemampatan yang biasa digunakan Modul zipfile
menyediakan alatan untuk mencipta, membaca, menulis, menambah dan menyenaraikan fail ZIP
Modul ini. pada masa ini tidak dapat mengendalikan fail ZIP volum terbahagi Ia menyokong penyahsulitan fail yang disulitkan dalam arkib ZIP, tetapi tidak boleh mencipta fail yang disulitkan. Penyahsulitan adalah sangat perlahan kerana ia dilaksanakan menggunakan Python asli dan bukannya C
Fail termampat
class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None, *, strict_timestamps=True)
: Objek ZipFile, mampatan menentukan mod mampatan
ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None)
: Tulis fail termampat, nama fail ialah nama fail asal, arcname ialah nama fail arkib, compress_type menentukan mod mampatan
压缩模式 | 含义 |
ZIP_STORED | 不压缩,默认值 |
ZIP_DEFLATED | 常用的 ZIP 压缩 |
ZIP_BZIP2 | BZIP2 压缩 |
ZIP_LZMA | LZMA 压缩 |
Kodnya adalah seperti berikut:
import random import zipfile with open('1.txt', mode='w') as f: for _ in range(1000): f.write(str(random.random()) + '\n') with zipfile.ZipFile('1.zip', mode='w', compression=zipfile.ZIP_DEFLATED) as zf: zf.write('1.txt') zf.write('1.txt', '2.txt', zipfile.ZIP_STORED) # 原文件名1.txt,存为2.txt,不压缩
Kesan
ZipFile.namelist()
: Kembalikan senarai fail yang diisih mengikut nama
ZipFile.extract(member, path=None, pwd=None)
: Ekstrak fail ke direktori yang ditentukan
import zipfile with zipfile.ZipFile('1.zip') as zf: for filename in zf.namelist(): zf.extract(filename, '.')
dipanggil zipfile.is_zipfile(filename)
ialah fail ZIP yang sah dan mengembalikan True
, jika tidak, ia mengembalikan False
, jika ia tidak wujud ia kembali False
import zipfile for filename in ['1.txt', '1.zip', '2.zip']: print(filename, zipfile.is_zipfile(filename)) # 1.txt False # 1.zip True # 2.zip False
ZipFile.namelist()
: Kembalikan senarai fail yang diisih mengikut nama
ZipFile.getinfo(name)
: Kembalikan ZipInfo objek
import zipfile with zipfile.ZipFile('1.zip', 'r') as zf: print(zf.namelist()) # 文件列表 for info in zf.infolist(): print(info) print(info.filename) # 文件名称 print(info.date_time) # 修改时间,可用datetime.datetime(*info.date_time) print(info.compress_type) # 压缩类型,值为zipfile.ZIP_STORED、ZIP_DEFLATED、ZIP_BZIP2、ZIP_LZMA print(info.comment) # 注释 print(info.extra) # 扩展字段数据 print(info.create_system) # 创建所用系统,0为Windows,3为Unix print(info.create_version) # 创建所用PKZIP版本 print(info.extract_version) # 提取所用PKZIP版本 print(info.flag_bits) # 标志位 print(info.volume) # 文件头的分卷号 print(info.compress_size) # 已压缩的数据大小 print(info.file_size) # 未压缩的数据大小 print()
ZipFile.writestr(zinfo_or_arcname, data, compress_type=None, compresslevel=None)
: Tulis fail ke fail mampat
import random import zipfile data = ''.join([str(random.random()) + '\n' for i in range(1000)]) with zipfile.ZipFile('1.zip', mode='w', compression=zipfile.ZIP_DEFLATED) as zf: zf.writestr('1.txt', data)
class zipfile.ZipInfo(filename='NoName', date_time=(1980, 1, 1, 0, 0, 0))
: Kelas maklumat ahli fail termampat
import time import random import zipfile data = ''.join([str(random.random()) + '\n' for i in range(1000)]) with zipfile.ZipFile('1.zip', mode='w', compression=zipfile.ZIP_DEFLATED) as zf: info = zipfile.ZipInfo('1.txt', date_time=time.localtime(time.time())) info.compress_type = zipfile.ZIP_DEFLATED info.comment = b'a comment' info.create_system = 0 zf.writestr(info, data)
Kesan
Tukar ZipFile
mode
untuk menambah mod a
import random import zipfile with open('2.txt', mode='w') as f: for _ in range(1000): f.write(str(random.random()) + '\n') with zipfile.ZipFile('1.zip', mode='a') as zf: zf.write('2.txt')
class zipfile.PyZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, optimize=-1)
: Digunakan untuk mencipta kelas ZIP yang mengandungi perpustakaan Python
zipfile_pyzipfile.py
import sys import zipfile with zipfile.PyZipFile('pyzipfile.zip', mode='w') as zf: zf.debug = 3 zf.writepy('.') for name in zf.namelist(): print(name) sys.path.insert(0, 'pyzipfile.zip') import zipfile_pyzipfile print('Imported from:', zipfile_pyzipfile.__file__)
Atas ialah kandungan terperinci Bagaimana untuk menggunakan modul pakej pemampatan zip dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!