pythonzipfile模块似乎并没有压缩我的文件
我做了一个小帮手function:
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。
这是因为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 file'
格式有一个非常简单的方法,
在shutil.make_archive
库中使用。
例如:
import shutil shutil.make_archive(file_name, 'zip', file location after compression)
可以在以下url查看更多的文档: https : //docs.python.org/2/library/shutil.html#shutil.make_archive