试图在 python 中压缩一些文件。但是大小并没有被压缩。
Posted
技术标签:
【中文标题】试图在 python 中压缩一些文件。但是大小并没有被压缩。【英文标题】:Trying to zip some files in python. But the size is not getting compressed. 【发布时间】:2017-05-15 14:21:11 【问题描述】:我正在尝试压缩目录中存在的一些文件。压缩成功,但大小似乎没有压缩很多。
我的代码:
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
有什么建议吗?
【问题讨论】:
可能重复:见***.com/questions/4166447/… 您只需提供压缩参数 ZIP_STORED 或 ZIP_DEFLATED。 docs.python.org/2/library/zipfile.html#zipfile.ZipFile python zipfile module doesn't seem to be compressing my files的可能重复 谢谢大家。这有帮助。好像我可以搜索更多;) 【参考方案1】:制作zipfile.ZipFile
时必须指定压缩率
ZipFile 构造函数
class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True)
ZIP_STORED 未压缩:
未压缩存档成员的数字常量。
因此您必须将其更改为其中之一
compression 是编写文件时使用的 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)
取决于选择的压缩算法
【讨论】:
以上是关于试图在 python 中压缩一些文件。但是大小并没有被压缩。的主要内容,如果未能解决你的问题,请参考以下文章