Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python zipfile,如何设置压缩级别?_Python_Zip_Zlib - Fatal编程技术网

Python zipfile,如何设置压缩级别?

Python zipfile,如何设置压缩级别?,python,zip,zlib,Python,Zip,Zlib,当zlib可用时,Python支持压缩文件,ZIP\u DEFLATE 见: Linux上的zip命令行程序支持-1最快、-9最好 有没有办法设置在Python的zipfile模块中创建的zip文件的压缩级别?该zipfile模块不提供此功能。在压缩过程中,它使用来自zlib-Z\u DEFAULT\u压缩的常量。默认情况下,它等于-1。因此,您可以尝试手动更改此常量,这是可能的解决方案。从python 3.7开始,zipfile添加了compresslevel参数。() 我知道这个问题已经过

当zlib可用时,Python支持压缩文件,
ZIP\u DEFLATE

见:

Linux上的
zip
命令行程序支持
-1
最快、
-9
最好


有没有办法设置在Python的
zipfile
模块中创建的zip文件的压缩级别?

zipfile
模块不提供此功能。在压缩过程中,它使用来自
zlib
-
Z\u DEFAULT\u压缩的常量。默认情况下,它等于-1。因此,您可以尝试手动更改此常量,这是可能的解决方案。

从python 3.7开始,zipfile添加了compresslevel参数。()


我知道这个问题已经过时了,但对于像我这样的人来说,这可能是一个比公认的更好的选择。

Python3回答:如果你看看构造器,你会看到:

def\uuuu init\uuuu(self,file,mode=“r”,compression=ZIP\u STORED,allowZip64=True,
压缩级别=无):
“”“以读取'r',写入'w',独占创建'x'模式打开ZIP文件,
或附加“a”。
...
压缩级别:无(给定压缩类型的默认值)或整数
指定要传递到压缩器的级别。
使用ZIP_存储或ZIP_LZMA时,此关键字无效。
使用ZIP_压缩整数时,接受0到9。
使用ZIP_时,接受1到9的整数。
"""
这意味着您可以在构造函数中传递所需的压缩:

myzip=zipfile.zipfile(TESTFN2,“w”,compression=zipfile.ZIP_存储)

另请参见

不太好(或线程安全)。但这似乎是唯一的办法。“Z_DEFAULT_压缩表示速度和压缩之间的默认折衷(目前相当于6级)。”——python 3.6文档。因此,这是一个不错的默认值。目前尚未实施此默认值,另请参见: