代码之家  ›  专栏  ›  技术社区  ›  Ramy

python zipfile模块似乎没有压缩我的文件

  •  52
  • Ramy  · 技术社区  · 14 年前

    我做了一个小助手功能:

    import zipfile
    
    def main(archive_list=[],zfilename='default.zip'):
        print zfilename
        zout = zipfile.ZipFile(zfilename, "w")
        for fname in archive_list:
            print "writing: ", fname
            zout.write(fname)
        zout.close()
    
    if __name__ == '__main__':
        main()  
    

    问题是我所有的文件都没有被压缩!文件的大小相同,实际上,扩展名改为“.zip”(在本例中是从“.xls”)。

    我在winxp sp2上运行python 2.5。

    2 回复  |  直到 6 年前
        1
  •  112
  •   Chinmay Kanchi    14 年前

    这是因为 ZipFile 要求您指定压缩方法。如果不指定它,它假定压缩方法为 zipfile.ZIP_STORED 只存储文件而不压缩它们。您需要指定 zipfile.ZIP_DEFLATED . 你需要 zlib 为此安装的模块 通常 默认情况下安装)。

    import zipfile
    
    def main(archive_list=[],zfilename='default.zip'):
        print zfilename
        zout = zipfile.ZipFile(zfilename, "w", zipfile.ZIP_DEFLATED) # <--- this is the change you need to make
        for fname in archive_list:
            print "writing: ", fname
            zout.write(fname)
        zout.close()
    
    if __name__ == '__main__':
        main()  
    
        2
  •  6
  •   Gavriel Cohen    6 年前

    有一种非常简单的压缩方法 zip 格式,

    在使用中 shutil.make_archive 图书馆。

    例如:

    import shutil
    
    shutil.make_archive(file_name, 'zip', file location after compression)
    

    可以在以下位置查看更广泛的文档: Here

    推荐文章