请教zipfile压缩文件时,怎么指定压缩级别呢

wxstorm
企鹅 2013-01-07 字数 53

我想使用最好的compression level压缩

这个在哪指定的?

3x

Python Python的自由天空
3 个回复
icedheart
icedheart 2013-01-07

用bz2,可以指定compresslevel

pgw
pppppppgw 2013-01-07

这个好像写死了,用zlib.Z_DEFAULT_COMPRESSION。

可以在使用zipfile之前修改zlib.Z_DEFAULT_COMPRESSION。

【 在 wxstorm (企鹅) 的大作中提到: 】

: 我想使用最好的compression level压缩

: 这个在哪指定的?

: 3x

pulo
普洛米·我们的民族从来不缺乏苦难 2013-01-08

I think you are right. OP can specify zlib.Z_DEFAULT_COMPRESSION (valued 0-9)

right before using zipfile.

Not sure why cpython developers hard-coded the compression level for zipfile...

http://hg.python.org/cpython/file/2.7/Lib/zipfile.py

35 # constants for Zip file compression methods

36 ZIP_STORED = 0

37 ZIP_DEFLATED = 8

38 # Other ZIP compression methods not supported

1126                 cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,

1127                      zlib.DEFLATED, -15)

1184             co = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,

1185                  zlib.DEFLATED, -15)

http://hg.python.org/cpython/file/65d61ed991d9/Modules/zlibmodule.c

312 static PyObject *

313 PyZlib_compressobj(PyObject *selfptr, PyObject *args)

314 {

315     compobject *self;

316     int level=Z_DEFAULT_COMPRESSION, method=DEFLATED;

317     int wbits=MAX_WBITS, memLevel=DEF_MEM_LEVEL, strategy=0, err;

330     err = deflateInit2(&self->zst, level, method, wbits, memLevel, strategy);

【 在 pgw (pppppppgw) 的大作中提到: 】

: 这个好像写死了,用zlib.Z_DEFAULT_COMPRESSION。

: 可以在使用zipfile之前修改zlib.Z_DEFAULT_COMPRESSION。