试图在python中压缩一些文件。但是尺寸没有被压缩。

时间:2017-05-15 14:21:11

标签: python python-3.x shell unix zipfile

我正在尝试压缩目录中的某些文件。压缩成功完成,但尺寸似乎没有压缩很多。

我的代码:

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您必须在制作zipfile.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)

取决于所选的压缩算法

相关问题