>  기사  >  백엔드 개발  >  Python에서 zipfile 압축 패키지 모듈을 사용하는 방법

Python에서 zipfile 압축 패키지 모듈을 사용하는 방법

PHPz
PHPz앞으로
2023-04-20 14:22:062348검색

소개

ZIP 파일 형식은 일반적으로 사용되는 보관 및 압축 표준입니다. zipfile 모듈은 ZIP 파일을 생성, 읽기, 쓰기, 추가 및 나열하는 도구를 제공합니다.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,不压缩

效果

Python에서 zipfile 압축 패키지 모듈을 사용하는 방법

解压文件

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, '.')

是否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

读取元数据

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()

从其他数据源压缩文件

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)

写入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)

效果

Python에서 zipfile 압축 패키지 모듈을 사용하는 방법

追加文件

把 ZipFile 的 mode 改为追加模式 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')

创建包含Python库的ZIP

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

이 모듈은 현재 이를 처리할 수 없습니다. 볼륨 ZIP 파일은 ZIP 아카이브의 암호화된 파일 암호 해독을 지원하지만 현재는 암호화된 파일을 생성할 수 없습니다. C

Compressed files🎜🎜class zipfile.ZipFile(file, mode='r', 압축=ZIP_STORED,allowZip64=True,compresslevel=None, * , strict_timestamps=True): ZipFile 객체, 압축은 압축 모드를 지정합니다🎜🎜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 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__)
🎜Effect🎜🎜Python에서 zipfile 압축 패키지 모듈을 사용하는 방법🎜🎜파일 추출🎜🎜ZipFile.namelist(): 다음으로 정렬된 파일 목록을 반환합니다. name🎜🎜ZipFile.extract(member, path=None, pwd=None): 지정된 디렉터리에 파일의 압축을 푼다🎜rrreee🎜ZIP 파일인지🎜🎜zipfile.is_zipfile(filename)을 호출하세요. )🎜🎜는 유효한 ZIP입니다. 파일은 True를 반환하고, 그렇지 않으면 False를 반환합니다. >🎜rrreee🎜메타데이터 읽기🎜🎜ZipFile.namelist( ): 이름별로 정렬된 파일 목록을 반환합니다. 🎜🎜ZipFile.getinfo(name): ZipInfo 개체를 반환합니다. 🎜 rrreee🎜다른 데이터 소스의 파일 압축🎜🎜ZipFile.writestr(zinfo_or_arcname, data,compress_type=None,compresslevel=None): 압축된 파일에 파일 쓰기🎜rrreee🎜ZipInfo에 쓰기🎜🎜class zipfile.ZipInfo(filename='NoName', date_time=( 1980, 1, 1, 0, 0, 0)): 압축된 파일 구성원 정보 class🎜rrreee🎜Effect🎜🎜Python에서 zipfile 압축 패키지 모듈을 사용하는 방법🎜🎜파일 추가🎜🎜ZipFile모드변경 > a 모드를 추가하려면🎜rrreee🎜Python 라이브러리가 포함된 ZIP 만들기🎜🎜class zipfile.PyZipFile(file, mode='r', 압축=ZIP_STORED,allowZip64=True,optimize=-1 ): Python 라이브러리 🎜🎜zipfile_pyzipfile.py🎜rrreee를 포함하는 ZIP 클래스를 만드는 데 사용됩니다.

위 내용은 Python에서 zipfile 압축 패키지 모듈을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제