2

このスクリプトを使用してファイルを圧縮します

import pylzma, struct
i = open(path+fileName,'rb')
o = open(path+zipName+'.zip','wb')
data = i.read()
c = pylzma.compressfile(data, eos=1)
result = c.read(5)
result += struct.pack('<Q', len(data))
o.write(result + c.read())
i.close()
o.close()

この方法を使用すると、ファイルを 7zip または lzma.exe で読み取ることができるため、 PyLZMA のドキュメントに示されているように使用します。7zip を使用した解凍は正常に機能しますが、PyLZMA を使用すると機能しません。私はこれを使用します:

i = open(path+name+'.zip', 'rb')
o = open(path+name, 'wb')
data = i.read()
u = pylzma.decompress(data)
o.write(u)

pylzma.decompress で停止し、次のエラーが表示されます。

TypeError: 解凍中のエラー: 1

4

1 に答える 1

3

ドキュメントを正しく読んでいる場合(PyLZMA のインストールに問題があるため確認できません)、処理可能compress()な文字列を出力しますdecompress()

ただし、圧縮された文字列を他のユーティリティと互換性を持たせるには、最初の 5 バイトと残りの圧縮データの間に 8 バイトの長さを挿入する必要があります。

したがって、PyLZMA を使用してデータを解凍したい場合は、その 8 バイトの長さフィールドを手動で削除する必要があると思われます (おそらく、入力ファイルを開いて 5 バイトを読み取り、8 をスキップして、残りのファイル)。

于 2012-06-15T06:46:42.933 に答える