gzip
ファイルを完全に圧縮せずにファイルの圧縮可能性を推定するための迅速で汚い方法はありますかgzip
?
俺はできて、できるよbash
、できるよ
bc <<<"scale=2;$(gzip -c file | wc -c)/$(wc -c <file)"
gz
これにより、ファイルをディスクに書き込むことなく圧縮要素を取得できます。これにより、gz
ディスク領域の節約効果が面倒を正当化するのに十分でない場合、ディスク上のファイルをそのバージョンに置き換えることを回避できます。ただし、このアプローチではファイルが完全に渡されますgzip
。これは、出力がディスクwc
に書き込まれるのではなく、パイプに渡されることです。
gzip
ファイルの内容全体を処理せずにファイルのおおよその圧縮推定値を取得する方法はありますか?
ベストアンサー1
以下は(おそらく同等の)Pythonバージョンです。スティーブン・チャジェラス 解決策
python -c "
import zlib
from itertools import islice
from functools import partial
import sys
with open(sys.argv[1], "rb") as f:
compressor = zlib.compressobj()
t, z = 0, 0.0
for chunk in islice(iter(partial(f.read, 4096), b''), 0, None, 10):
t += len(chunk)
z += len(compressor.compress(chunk))
z += len(compressor.flush())
print(z/t)
" file