次のコマンドを使用してLinuxで解凍できるファイルがあります。
unxz < file.xz > file.txt
Pythonを使用して同じことを行うにはどうすればよいですか? python3とtarfileモジュールを使用して、次のことを行う場合:
import sys
import tarfile
try:
with tarfile.open('temp.xz', 'r:xz') as t:
t.extract()
except Exception as e:
print("Error:", e.strerror)
例外が発生します:ReadError( 'invalid header'、)。したがって、明らかに、xzファイルに存在しないファイルまたはディレクトリ情報が必要です。
では、ヘッダー情報なしでファイルを解凍するにはどうすればよいですか?
tarfile
モジュールは...エラー...tarファイル専用です。ここにあるのは1つではありません。
XZサポートはPython 3.3のLZMAモジュールで利用できます。Python 2.xでは、 backports.lzma
。
try:
import lzma
except ImportError:
from backports import lzma
print lzma.open('file.xz').read()