【发布时间】:2019-04-30 17:29:28
【问题描述】:
我想知道压缩文件 (7zip) 中文件的名称,而不提取该文件。我如何在 python 中做到这一点?
【问题讨论】:
标签: python compression 7zip
我想知道压缩文件 (7zip) 中文件的名称,而不提取该文件。我如何在 python 中做到这一点?
【问题讨论】:
标签: python compression 7zip
在 Mac 或 Linux 上,您可以使用 libarchive。 (在windows上你可以试试libarchive-c但我没试过)
这里有一个粗略的例子可以帮助你入门,不过我建议你阅读链接
import libarchive.public
with libarchive.public.file_reader('test.7z') as e:
for entry in e:
print(e)
【讨论】:
另一个 Linux 示例,如果您只是在编写一个快速脚本(不用担心来自不受信任的用户的变形文件名),您总是可以推迟到 7z 可执行文件(此代码假设您的代码支持未记录的 -ba 选项)
#!/usr/bin/python3
# this doesn't work for files with embedded newlines
import subprocess
import sys
pp = subprocess.run(
[ '7z', 'l', '-ba', sys.argv[1] ] ,
stdout = subprocess.PIPE ,
stderr = subprocess.PIPE ,
)
pp.check_returncode()
for line in pp.stdout.split( b'\n' ):
if line:
sys.stdout.buffer.write( line[53:] )
sys.stdout.buffer.write( b'\n' )
【讨论】: