zipfile教程

介绍

zipfile是Python的一个内置模块,它提供了用于读取和写入ZIP格式归档文件的接口。ZIP文件是一种常见的归档文件格式,可以将多个文件和目录压缩为一个单独的文件。方便我们对zip格式的文件读取、写入。

方法

ZipFile()

ZipFile类:表示一个ZIP文件对象,可以用来读取或写入ZIP文件。可以通过实例化ZipFile对象来打开一个ZIP文件,然后使用其中的方法来操作文件和目录。

import zipfile
file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r',  compression=zipfile.ZIP_STORED)

第一个参数是要读取或者写入的zip文件名
mode表示要模式,r表示读取,w表示写入,a表示追加,默认为读取模式。
compression表示压缩模式

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

ZipFile.read()和ZipFile.close()

ZipFile.read()方法:读取ZIP文件中的文件内容。pwd可以指定解压密码密码。
ZipFile.close()方法:关闭ZIP文件对象,释放资源。

import zipfile

file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r',  compression=zipfile.ZIP_STORED)
print(file.read('chat-gpt-website-master/requirements.txt'))
file.close()

zipfile.is_zipfile(filename)

zipfile.is_zipfile(filename) 判断是否为zip文件,如果是返回True,不是返回False

import zipfile
file = zipfile.is_zipfile('chat-gpt-website-master.zip')
print(file)

ZipInfo()

ZipInfo类:表示ZIP文件中的一个文件或目录的信息,包括名称、大小、压缩方法等。可以通过ZipFile对象的getinfo()方法来获取ZipInfo对象。

import zipfile
file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r',  compression=zipfile.ZIP_STORED)
for i in file.namelist():
    print(file.getinfo(i)) # 传入文件名

infolist()

infolist() 返回一个包含ZIP文件内所有成员信息的ZipInfo对象


import zipfile
file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r',  compression=zipfile.ZIP_STORED)

print(file.infolist())




namelist()

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

import zipfile
file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r',  compression=zipfile.ZIP_STORED)
print(file.namelist())

extract()和extractall()

方法 含义
extract() 解压指定的文件
extractall() 解压所有文件

extract()方法实例

扫描二维码关注公众号,回复: 17052125 查看本文章

import zipfile  
  
# 打开ZIP文件  
with zipfile.ZipFile('example.zip', 'r') as zip_file:  
    # 解压指定文件到指定目录  
    zip_file.extract('file.txt', 'output_directory')

extractall()方法实例

import zipfile  
  
# 打开ZIP文件  
with zipfile.ZipFile('example.zip', 'r') as zip_file:  
    # 解压所有文件到指定目录  
    zip_file.extractall('output_directory')

实例

创建zip文件并解压和读取



import zipfile

# 创建压缩文件并写入文件
for i in range(1, 5):
    file = zipfile.ZipFile(f'{
      
      i}.zip', mode='w', compression=zipfile.ZIP_DEFLATED)
    file.write('test.txt')
    file.close()

# 读取文件内容
for i in range(1, 5):
    read_file = zipfile.ZipFile(f'{
      
      i}.zip')
    print(read_file.read('test.txt'))

# 解压文件指定文件

file = zipfile.ZipFile('1.zip')
# 第一个参数有是要解压的文件 第二个参数是指定解压文件存放的目录 如果没有该目录会自动创建
file.extract('test.txt', 'yass')

# 解压所有文件

file = zipfile.ZipFile('1.zip')
file.extractall('yass')


解压zip,写入新文件重写压缩

import zipfile
import os


# 读取文件
file = zipfile.ZipFile('chat-gpt-website-master.zip')
file.extractall('yyds')
file.close()

def zip_directory(root_dir, zip_file):
    for root, dirs, files in os.walk(root_dir):

        # root 表示当前正在访问的文件夹路径
        # dirs 表示该文件夹下的子目录名list
        # files 表示该文件夹下的文件list
        for file in files:
            file_path = os.path.join(root, file)
            print(file_path)
            # arcname将文件写入指定目录 目录+文件名
            zip_file.write(file_path, arcname='chat-gpt-website-master/'+os.path.relpath(file_path, root_dir))

    zip_file.write('test.md', arcname='chat-gpt-website-master/test.md')


with zipfile.ZipFile('file.zip', 'w') as zip_file:
    # 压缩指定目录及其嵌套文件
    zip_directory('yyds/chat-gpt-website-master', zip_file)





猜你喜欢

转载自blog.csdn.net/qq_65898266/article/details/133549394