如何使用模组,压缩与解压缩ZIP文件文件的使用方法

文章目录[隐藏]

描述如何使用、压缩和解压缩 ZIP 文件以及查看 ZIP 文件信息的 mod。

标准库中的模块可用于压缩和解压缩 ZIP 文件。以下是它们的使用教程和示例。

检查文件是否为 ZIP 存档

要检查指定文件是否为 ZIP 存档,可以使用的函数:

import zipfile
# 文件名称
files = ['a.txt', 'b.zip']
# 检查文件是否为 ZIP 压缩文件
for f in files:
    print('{}: {}'.format(f, zipfile.is_zipfile(f)))

a.txt: False
b.zip: True

查看 ZIP 存档内容信息

要查看 ZIP 存档中包含哪些文件,打开 ZIP 存档后,使用 () 函数获取文件名列表:

import zipfile
# 查看 ZIP 压缩文件内容信息
with zipfile.ZipFile('archive.zip', 'r') as zf:
    print(zf.namelist())

图片[1]-如何使用模组,压缩与解压缩ZIP文件文件的使用方法-唐朝资源网

['build.sh', 'mount_s3.sh']

文件名只是ZIP压缩包中的一条信息怎么用360解压压缩文件,其他更详细的信息可以通过()和()获取。

() 可以通过文件名获取对象,详见:

import zipfile
import datetime
# 查看 ZIP 压缩文件内容信息
with zipfile.ZipFile('archive.zip', 'r') as zf:
    # # 以文件名称取得 ZipInfo 物件
    info = zf.getinfo('build.sh')
    print(info)
    # ZipInfo 物件各项信息
    print('文件名称:', info.filename)
    print('修改时间:', datetime.datetime(*info.date_time))
    print('压缩方式:', info.compress_type)
    print('未压缩大小:', info.file_size, 'bytes')
    print('压缩后大小:', info.compress_size, 'bytes')

文件名称: build.sh
修改时间: 2022-02-22 11:24:16

图片[2]-如何使用模组,压缩与解压缩ZIP文件文件的使用方法-唐朝资源网

压缩方式: 8 未压缩大小: 885 bytes 压缩后大小: 488 bytes

() 是可用于获取所有文件的对象列表:

import zipfile
# 查看 ZIP 压缩文件内容信息
with zipfile.ZipFile('archive.zip', 'r') as zf:
    # 透过 InfoInfo 物件查看 ZIP 文件内容
    for info in zf.infolist():
        print(info)


创建 ZIP 存档

要创建 ZIP 存档,可以先创建对象,然后使用 write() 添加要压缩的文件:

import zipfile
# 建立 ZIP 压缩文件
with zipfile.ZipFile('new_archive.zip', mode='w') as zf:
    # 加入要压缩的文件
    zf.write("a.txt")
    zf.write("b.txt")

图片[3]-如何使用模组,压缩与解压缩ZIP文件文件的使用方法-唐朝资源网

要指定压缩方式,可以添加参数:

import zipfile
# 建立 ZIP 压缩文件,以 DEFLATED 方式压缩
with zipfile.ZipFile('new_archive.zip', mode='w',
        compression=zipfile.ZIP_DEFLATED) as zf:
    # 加入要压缩的文件
    zf.write("a.txt")
    zf.write("b.txt")

直接写入数据

要将程序中的数据直接写入 ZIP 存档,您可以改用 () 函数,这是一个简单的示例:

import zipfile
# 要压缩的数据
my_data = "Hello, World."
# 建立 ZIP 压缩文件
with zipfile.ZipFile('new_archive.zip', mode='w') as zf:
    # 加入要压缩的数据
    zf.writestr("data.txt", my_data)

在上面的示例中,我们在 ZIP 存档中创建了一个新文件 data.txt怎么用360解压压缩文件,并将变量中的数据写入其中。

追加新文件

图片[4]-如何使用模组,压缩与解压缩ZIP文件文件的使用方法-唐朝资源网

如果要将新文件添加到现有 ZIP 存档中,可以通过将 mode 参数设置为 ‘a’ 以追加模式添加新文件:

解压缩 ZIP 文件

要解压文件,可以使用 () 函数:

import zipfile
# 打开 ZIP 压缩文件
with zipfile.ZipFile('archive.zip', 'r') as zf:
    # 列出每个文件
    for name in zf.namelist():
        # 解压缩指定文件至 /my/folder 目录
        zf.extract(name, path='/my/folder')

这里的path参数可以指定解压文件要放置的位置。如果不指定放置路径,则默认放置在当前目录下。

我们还可以使用 () 函数将所有文件一次解压到指定位置:

import zipfile
# 打开 ZIP 压缩文件
with zipfile.ZipFile('archive.zip', 'r') as zf:
    # 解压缩所有文件至 /my/folder 目录
    zf.extractall(path='/my/folder')

CRC校验码

在ZIP压缩文件中,每个文件都有一组CRC校验码,可以用来确认每个文件的完整性以及文件是否损坏。我们可以使用()函数对ZIP文件中每个文件的CRC校验码进行校验,如果文件的CRC校验码有问题,该函数会返回找到的第一个有问题的文件名,并返回如果一切正常,则无。这是一个简单的例子:

import zipfile

图片[5]-如何使用模组,压缩与解压缩ZIP文件文件的使用方法-唐朝资源网

# 打开 ZIP 压缩文件 with zipfile.ZipFile('broken_data.zip', 'r') as zf: # 确认 CRC 检查码 crc_result = zf.testzip() # 输出第一个错误的文件名称 if crc_result: print(crc_result)

异常处理

如果遇到损坏的 ZIP 压缩包,解压时会抛出异常,以下是异常处理示例:

import zipfile
# 打开 ZIP 压缩文件
with zipfile.ZipFile('broken_data.zip', 'r') as zf:
    # 解压缩
    try:
        zf.extractall()
    except zipfile.BadZipfile as e:
        print("ZIP 文件错误:", e)

ZIP 文件错误: Bad CRC-32 for file 'build.sh'

© 版权声明
THE END
喜欢就支持一下吧
点赞162 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片