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

2024-04-28 04:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个小助手函数:

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。


Tags: 函数importdefaultmaindef助手zipfname
2条回答

这是因为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()  

压缩zip格式的方法非常简单

shutil.make_archive库中使用。

例如:

import shutil

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

可以在:Here上看到更多的文档

相关问题 更多 >