• 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)
    
    
    • 1
    • 2
    • 3

    第一个参数是要读取或者写入的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()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    zipfile.is_zipfile(filename)

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

    import zipfile
    file = zipfile.is_zipfile('chat-gpt-website-master.zip')
    print(file)
    
    
    • 1
    • 2
    • 3
    • 4

    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)) # 传入文件名
    
    • 1
    • 2
    • 3
    • 4

    infolist()

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

    
    import zipfile
    file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r',  compression=zipfile.ZIP_STORED)
    
    print(file.infolist())
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    namelist()

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

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

    extract()和extractall()

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

    extract()方法实例

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

    extractall()方法实例

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

    实例

    创建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')
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    解压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)
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    1、3快速格式代码
    第四十九周总结——初遇http
    使用Python的requests库采集充电桩LBS位置经纬度信息
    深入学习 Redis Sentinel - 基于 DockerCompose 编排哨兵分布式架构,理解工作原理
    Java泛型
    Windows 和 Linux 系统下,如何查看 Redis 的版本号?
    WebRTC系列-SDP之setLocalDescription(2)
    OSCP系列靶场-Intermediate-BTRSys2.1保姆级
    WorldView卫星遥感影像数据/米级分辨率遥感影像
    求臻医学:实体肿瘤FDA/NMPA新获批抗癌药物/适应症盘点
  • 原文地址:https://blog.csdn.net/qq_65898266/article/details/133549394