是否可以在不解压缩整个文件的情况下列出LZMA文件(.7zip)的内容?另外,我可以从LZMA文件中提取单个文件吗?
我的问题:我有一个30GB的.7z文件解压缩到> 5TB。我想操纵原始的.7z文件而不需要完全解压缩。
答案 0 :(得分:1)
是。从XZ Utils开始。有Perl和Python API。
您可以从标题中找到所需的文件。每个文件都是单独压缩的,因此您只需提取所需的文件即可。
答案 1 :(得分:0)
从Sourceforge上的LZMA SDK文件页面下载lzma922.tar.bz2,然后解压缩文件并打开C / Util / 7z / 7zMain.c。在那里,您将找到从.7z存档中提取特定存档文件的例程。您不需要从所有条目中提取所有数据,示例代码显示了如何仅提取您感兴趣的数据。此相同的代码具有列出条目而不提取所有压缩数据的逻辑。
答案 2 :(得分:0)
我通过安装7zip(https://www.7-zip.org/)并使用参数l解决了此问题。例如:
7z l file.7z
输出是一些描述性信息以及压缩文件中的文件列表。然后,我在子进程库中的python内部调用它:
import subprocess
output = subprocess.Popen(["7z","l", "file.7z"], stdout=subprocess.PIPE)
output = output.stdout.read().decode("utf-8")
不要忘记确保可以在PATH变量中访问程序7z。我必须在Windows中手动执行此操作。