我正在尝试压缩目录中的某些文件。压缩成功完成,但尺寸似乎没有压缩很多。
我的代码:
import os
import zipfile
import sys
def zipdir(client, path):
os.chdir(path)
if client == 'ABC':
zipf = zipfile.ZipFile('Store.zip', 'w')
zipf.write('Facts.txt')
for f in os.listdir(path):
if f.endswith('.txt') or f.endswith('.xls'):
if 'pretty' in f:
zipf.write(f)
zipf.close()
当我尝试在unix shell脚本中压缩它时,大小变为40M。 但是当我尝试用Python压缩它时,大小是196M
有什么建议吗?
答案 0 :(得分:1)
您必须在制作zipfile.ZipFile
class zipfile.ZipFile(file,mode =' r',compression = ZIP_STORED, allowZip64 = TRUE)
ZIP_STORED未压缩:
未压缩存档成员的数字常量。
因此您必须将其更改为其中一个
压缩是编写时使用的ZIP压缩方法 存档,应该是ZIP_STORED,ZIP_DEFLATED,ZIP_BZIP2或 ZIP_LZMA;
最好使用自动打开和关闭文件的上下文管理器(with
),也可以在出现问题时使用
因此您可以将该部分更改为
with zipfile.ZipFile('Store.zip', 'w', compression=zipfile.ZIP_LZMA) as zipf
zipf.write('Facts.txt')
for f in os.listdir(path):
if f.endswith('.txt') or f.endswith('.xls'):
if 'pretty' in f:
zipf.write(f)
取决于所选的压缩算法