Heim > Backend-Entwicklung > Python-Tutorial > So verwenden Sie das Zipfile-Komprimierungspaketmodul in Python

So verwenden Sie das Zipfile-Komprimierungspaketmodul in Python

PHPz
Freigeben: 2023-04-20 14:22:06
nach vorne
2359 Leute haben es durchsucht

Einführung

Das ZIP-Dateiformat ist ein häufig verwendeter Archivierungs- und Komprimierungsstandard. Das Modul zipfile bietet Tools zum Erstellen, Lesen, Schreiben, Hinzufügen und Auflisten von ZIP-Dateien. zipfile 模块提供了创建、读取、写入、添加及列出 ZIP 文件的工具

此模块目前不能处理分卷 ZIP 文件,支持解密 ZIP 归档中的加密文件,但是目前不能创建一个加密的文件。解密非常慢,因为它是使用原生 Python 而不是 C 实现的

压缩文件

class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None, *, strict_timestamps=True):ZipFile 对象,compression指定压缩模式

ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None):写入压缩文件,filename为原文件名,arcname为存档文件名,compress_type指定压缩模式

压缩模式 含义
ZIP_STORED 不压缩,默认值
ZIP_DEFLATED 常用的 ZIP 压缩
ZIP_BZIP2 BZIP2 压缩
ZIP_LZMA LZMA 压缩

代码如下:

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,不压缩
Nach dem Login kopieren

效果

So verwenden Sie das Zipfile-Komprimierungspaketmodul in Python

解压文件

ZipFile.namelist():返回按名称排序的文件列表

ZipFile.extract(member, path=None, pwd=None):解压文件到指定目录

import zipfile

with zipfile.ZipFile('1.zip') as zf:

    for filename in zf.namelist():

        zf.extract(filename, '.')
Nach dem Login kopieren

是否ZIP文件

调用 zipfile.is_zipfile(filename)

是一个有效的 ZIP 文件返回 True,否则返回 False,压根不存在返回 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
Nach dem Login kopieren

读取元数据

ZipFile.namelist():返回按名称排序的文件列表

ZipFile.getinfo(name):返回一个 ZipInfo对象

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()
Nach dem Login kopieren

从其他数据源压缩文件

ZipFile.writestr(zinfo_or_arcname, data, compress_type=None, compresslevel=None):将一个文件写入压缩文件

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)
Nach dem Login kopieren

写入ZipInfo

class zipfile.ZipInfo(filename='NoName', date_time=(1980, 1, 1, 0, 0, 0)):压缩文件成员信息类

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)
Nach dem Login kopieren

效果

So verwenden Sie das Zipfile-Komprimierungspaketmodul in Python

追加文件

ZipFilemode 改为追加模式 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')
Nach dem Login kopieren

创建包含Python库的ZIP

class zipfile.PyZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, optimize=-1)

Dieses Modul kann es derzeit nicht verarbeiten. Volume-ZIP-Dateien unterstützen die Entschlüsselung verschlüsselter Dateien in ZIP-Archiven, können jedoch derzeit keine verschlüsselte Datei erstellen. Die Entschlüsselung ist sehr langsam, da sie in nativem Python statt in C implementiert ist. strict_timestamps=True): ZipFile-Objekt, Komprimierung gibt den Komprimierungsmodus an

ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None): Eine komprimierte Datei schreiben, Dateiname ist der ursprüngliche Dateiname, Arcname ist der Name der Archivdatei, compress_type gibt den Komprimierungsmodus an td>KomprimierungsmodusBedeutungZIP_STOREDKeine Komprimierung, Standardwert ZIP_DEFLATED Häufig verwendete ZIP-KomprimierungZIP_BZIP2BZIP2-Komprimierung ZIP_LZMA LZMA-Komprimierung🎜Der Code lautet wie folgt: 🎜
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__)
Nach dem Login kopieren
🎜Effekt🎜🎜So verwenden Sie das Zipfile-Komprimierungspaketmodul in Python🎜🎜Extrahieren Sie die Datei🎜🎜ZipFile.namelist(): Gibt eine Liste der Dateien sortiert nach zurück name🎜🎜ZipFile.extract (member, path=None, pwd=None): Entpacken Sie die Datei in das angegebene Verzeichnis🎜rrreee🎜Ob die ZIP-Datei🎜🎜Rufen Sie zipfile.is_zipfile(filename )🎜🎜ist eine gültige ZIP-Datei. Die Datei gibt True zurück, andernfalls gibt sie False zurück. Wenn sie nicht existiert, gibt sie False zurück >🎜rrreee🎜Metadaten lesen🎜🎜ZipFile.namelist( ): Gibt eine nach Namen sortierte Liste von Dateien zurück 🎜🎜ZipFile.getinfo(name): Gibt ein ZipInfo-Objekt zurück 🎜 rrreee🎜Komprimieren Sie Dateien aus anderen Datenquellen🎜🎜ZipFile.writestr (zinfo_or_arcname, data, compress_type=None, compresslevel=None): Schreiben Sie eine Datei in die komprimierte Datei🎜rrreee🎜Write to ZipInfo🎜🎜class zipfile.ZipInfo(filename='NoName', date_time=( 1980, 1, 1, 0, 0, 0)): Informationen zu komprimierten Dateimitgliedern class🎜rrreee🎜Effect🎜🎜So verwenden Sie das Zipfile-Komprimierungspaketmodul in Python🎜🎜Datei anhängen🎜🎜Ändern Sie den Modusvon ZipFile > um den Modus a anzuhängen ): wird zum Erstellen einer ZIP-Klasse verwendet, die die Python-Bibliothek 🎜🎜zipfile_pyzipfile.py🎜rrreee enthält

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Zipfile-Komprimierungspaketmodul in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage