如何使用仅包含数据但没有文件名的python解压缩xz文件?

MiB*_*der 8 python compression tarfile xz

我有一个文件,我可以使用以下命令在linux下解压缩:

unxz < file.xz > file.txt
Run Code Online (Sandbox Code Playgroud)

我怎么能用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)
Run Code Online (Sandbox Code Playgroud)

我得到了异常:ReadError('invalid header').显然,它需要一些xz文件中不存在的文件或目录信息.

那么如何在没有头信息的情况下解压缩文件呢?

Cha*_*ffy 13

tarfile模块仅用于...错误... tar文件.你在这里不是一个人.


Python 3.3的LZMA模块支持XZ.在Python 2.x中,您需要backports.lzma.

try:
    import lzma
except ImportError:
    from backports import lzma

print lzma.open('file.xz').read()
Run Code Online (Sandbox Code Playgroud)

  • @Pete,`lzma.open('test.txt.xz').read().decode('utf-8')`太多了?也就是说,您可以传递`lzma.open('test.txt.xz',mode ='rt',encoding ='utf-8')`来获得开箱即用的多字节字符解码. (4认同)