我有一个程序,需要解压缩.xz压缩档案How to decompress a .xz file which has multiple folders/files inside, in a single go?。
我已经读到可以通过pip install pyliblzma
使用lzma来实现,但是在Windows上通过pip安装时似乎已经中断了。
Collecting pyliblzma
Using cached https://files.pythonhosted.org/packages/17/48/5292ade507dafe573360560ba53783395587dc42eb32b347feb2ac70fc6b/pyliblzma-0.5.3.tar.bz2
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\users\ben\appdata\local\temp\pip-install-_hmrno\pyliblzma\setup.py", line 48, in <module>
shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True).stdout.read():
File "c:\python27\lib\subprocess.py", line 347, in __init__
raise ValueError("close_fds is not supported on Windows "
ValueError: close_fds is not supported on Windows platforms if you redirect stdin/stdout/stderr
我也尝试过pip install pylzma
,但这需要用于Python的Visual Studio C ++编译器
building 'pylzma' extension
error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27
由于我的程序是可移植的,并且在用户之间共享,因此我想尽量避免让他们安装单独的二进制文件以供程序使用。
是否有另一种无需使用lzma即可在Python2.7中严格执行.xz档案的方法,还是通过pip install
获得lzma的工作版本的方法?
答案 0 :(得分:0)
我设法通过使用便携式版本的7zip并使用其命令行界面来提取文件来解决问题。
params = ["7zG.exe", "x", "my_filename.xz", "-ooutputdir\\"]
p = Popen(params, stdout=subprocess.PIPE)