python模块--zipfile文件压

发布时间:2019-05-09 21:56:18编辑:auto阅读(2054)

    zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求 ,本文主要谈谈zipfile几个常用的用法。

     

    首先我在Windows操作系统中创建如下的文件目录:

     

    一、读取压缩文件:

    代码:

    import zipfile

    import os

     

    # 压缩文件路径

    zip_file_path = r'F:\压缩文件zipfile\zipfile_dir.zip'

    # 压缩文件目录路径

    zip_dir = r'F:\压缩文件zipfile\zipfile_dir'

     

    # 打开压缩文件

    zip_files = zipfile.ZipFile(zip_file_path,mode='r')

    # 获取zip压缩文件的相关信息

    for content in zip_files.infolist():

        print(content)

    # 遍历zip压缩文件的文件名称

    for name in zip_files.namelist():

        print(name)

     

    # 记得要像读取file那样关闭文件句柄

    zip_files.close()

     

     

     

    压缩文件的名称、压缩算法和大小等信息

    <ZipInfo filename='zipfile_dir/test1.txt' compress_type=deflate external_attr=0x20 file_size=2918 compress_size=1591>
    <ZipInfo filename='zipfile_dir/test2.txt' compress_type=deflate external_attr=0x20 file_size=2918 compress_size=1591>
    <ZipInfo filename='zipfile_dir/' external_attr=0x10>

     

    压缩文件目录下所有文件的名称

    zipfile_dir/test1.txt
    zipfile_dir/test2.txt
    zipfile_dir/

     

     

    二、往zip目录中添加文件

    代码:

    # 在指定zip压缩文件目录下创建zip文件

    create_zip_file = zipfile.ZipFile(zip_file_path, mode='a', compression=zipfile.ZIP_DEFLATED)

    new_file_path = os.path.join(zip_dir,r'README.txt')

    # 将文件夹中的文件拷贝进zip目录

    file_name = 'README.txt'

    create_zip_file.write(new_file_path,file_name)

    create_zip_file.close()

     

    注意:加入zip目录的文件本身在文件夹中已经存在,否则zipfile模块搜索路径是无法找到的。

     

    添加成功:

     

    三、解压文件:

    zipfile提供的压缩方法有:

    ZIP_STORED,ZIP_DEFLATED, ZIP_BZIP2和ZIP_LZMA

    ZIP_STOREED:只是作为一种存储,实际上并未压缩

    ZIP_DEFLATED:用的是gzip压缩算法

    ZIP_BZIP2:用的是bzip2压缩算法

    ZIP_LZMA:用的是lzma压缩算法

     

    gzip和bzip2压缩算法的区别:

    使用 gzip要比bzip2快,但是bzip2会获得比 gzip更高的压缩率,即bzip压缩后的压缩文件跟小。

    更多关于这几种算法的区别可以看这两篇篇文章:

    https://www.cnblogs.com/kuang17/p/7193124.html

    https://blog.csdn.net/leilonghao/article/details/73200859

     

    代码:

    # 解压后文件放置的目录

    unzip_dir = r'F:\tk_demo_test'

    # 解压前文件的zip目录

    zip_file2_path = r'F:\tk_demo.zip'

    unzip_files = zipfile.ZipFile(zip_file2_path,mode='r',compression=zipfile.ZIP_DEFLATED)

    unzip_files.extractall(unzip_dir)

    unzip_files.close()

     

    解压成功:

     

    参考文章:

    https://www.cnblogs.com/kuang17/p/7193124.html

    https://blog.csdn.net/leilonghao/article/details/73200859

    更多内容,请参考官方文档:https://docs.python.org/3/library/zipfile.html#zipfile.ZIP_STORED

关键字