Maison > développement back-end > Tutoriel Python > Comment utiliser le module de package de compression zipfile en Python

Comment utiliser le module de package de compression zipfile en Python

PHPz
Libérer: 2023-04-20 14:22:06
avant
2395 Les gens l'ont consulté

Introduction

Le format de fichier ZIP est une norme d'archivage et de compression couramment utilisée. Le module zipfile fournit des outils pour créer, lire, écrire, ajouter et lister des fichiers ZIPzipfile 模块提供了创建、读取、写入、添加及列出 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,不压缩
Copier après la connexion

效果

Comment utiliser le module de package de compression zipfile en 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, '.')
Copier après la connexion

是否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
Copier après la connexion

读取元数据

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()
Copier après la connexion

从其他数据源压缩文件

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)
Copier après la connexion

写入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)
Copier après la connexion

效果

Comment utiliser le module de package de compression zipfile en 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')
Copier après la connexion

创建包含Python库的ZIP

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

Ce module ne peut actuellement pas le gérer. Les fichiers ZIP de volume prennent en charge le décryptage des fichiers cryptés dans les archives ZIP, mais ne peuvent actuellement pas créer de fichier crypté. Le décryptage est très lent car il est implémenté en Python natif au lieu de C

Fichiers compressés🎜🎜class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED,allowZip64=True, compresslevel=None, * , strict_timestamps=True) : objet ZipFile, la compression spécifie le mode de compression🎜🎜ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None) : Écrivez un fichier compressé, filename est le nom du fichier d'origine, arcname est le nom du fichier d'archive, compress_type spécifie le mode de compression🎜< td>Mode de compression
Signification
ZIP_STOREDAucune compression, valeur par défaut
ZIP_DEFLATED Compression ZIP couramment utilisée
ZIP_BZIP2Compression BZIP2
ZIP_LZMA Compression LZMA
🎜Le code est le suivant : 🎜
import sys

import zipfile

with zipfile.PyZipFile(&#39;pyzipfile.zip&#39;, mode=&#39;w&#39;) as zf:

    zf.debug = 3

    zf.writepy(&#39;.&#39;)

for name in zf.namelist():

    print(name)

sys.path.insert(0, &#39;pyzipfile.zip&#39;)

import zipfile_pyzipfile

print(&#39;Imported from:&#39;, zipfile_pyzipfile.__file__)
Copier après la connexion
🎜Effet🎜🎜Comment utiliser le module de package de compression zipfile en Python🎜🎜Extraire le fichier🎜🎜ZipFile.namelist() : renvoie une liste de fichiers triés par name🎜🎜ZipFile.extract (member, path=None, pwd=None) : Décompressez le fichier dans le répertoire spécifié🎜rrreee🎜Si le fichier ZIP🎜🎜Appelez zipfile.is_zipfile(filename )🎜🎜est un ZIP valide Le fichier renvoie True, sinon il renvoie False S'il n'existe pas, il renvoie False🎜rrreee🎜Lire les métadonnées🎜🎜<code>ZipFile.namelist( ) : renvoie une liste de fichiers triés par nom 🎜🎜ZipFile.getinfo(name) : renvoie un objet ZipInfo 🎜 rrreee🎜Compresser les fichiers provenant d'autres sources de données🎜🎜ZipFile.writestr (zinfo_or_arcname, data, compress_type=None, compresslevel=None) : Écrivez un fichier dans le fichier compressé🎜rrreee🎜Écrivez dans ZipInfo🎜🎜class zipfile.ZipInfo(filename='NoName', date_time=( 1980, 1, 1, 0, 0, 0)) : classe d'informations sur les membres du fichier compressé🎜rrreee🎜Effect🎜🎜Comment utiliser le module de package de compression zipfile en Python🎜🎜Ajouter un fichier🎜🎜Changer le modede ZipFile > pour ajouter le mode a🎜rrreee🎜Créer un ZIP contenant la bibliothèque Python🎜🎜class zipfile.PyZipFile(file, mode='r', compression=ZIP_STORED,allowZip64=True,optimise=-1 ) : utilisé pour créer une classe ZIP contenant la bibliothèque Python 🎜🎜zipfile_pyzipfile.py🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal