我正在编写一个Python脚本,需要调用7z从存档文件中提取目录内的一些文件,而不必解压整个存档文件。 存档文件包含多个目录,我需要从特定目录中提取一些文件。
假设"abc.7z"是一个存档文件,其中包含多个目录,例如 "temp"、"windows"、"system"、"data"。 我只想从"system"目录中提取一些.exe文件,因为这些.exe文件也可能存在于其他目录中,但我只对"system"目录中的文件感兴趣。
我只需要7z命令; 调用7z的方法我会自己找。 感谢你的帮助。
我正在编写一个Python脚本,需要调用7z从存档文件中提取目录内的一些文件,而不必解压整个存档文件。 存档文件包含多个目录,我需要从特定目录中提取一些文件。
假设"abc.7z"是一个存档文件,其中包含多个目录,例如 "temp"、"windows"、"system"、"data"。 我只想从"system"目录中提取一些.exe文件,因为这些.exe文件也可能存在于其他目录中,但我只对"system"目录中的文件感兴趣。
我只需要7z命令; 调用7z的方法我会自己找。 感谢你的帮助。
您可以在命令行的末尾指定文件/文件夹过滤器。请查看此链接,获取有关7zip命令行命令和选项的更多详细信息。
7z.exe x [archive.7z] -o[output_dir] [filter]
例如:7z.exe x abc.7z -aoa -oC:\Temp system
您还可以从系统文件夹中指定特定类型的文件。例如,system\*.exe
将提取system
目录中的所有.exe
文件。
-aoa
选项是覆盖模式。
要从Python调用它,您可以使用subprocess
模块。类似于:
import subprocess
cmd = []
cmd.append(r'C:\Program Files\7-Zip\7z.exe')
cmd.append('x')
cmd.append(archive)
cmd.append('-aoa')
cmd.append('-o{}'.format(dst_part))
cmd.append(file_folder_filter)
subprocess.call(cmd)
从 7z 压缩包中提取特定目录的步骤:
特定目录:rootdir/firstson/second
压缩文件:test.7z
要使用的命令:
7z x test.7z rootdir/firstson/second
7z.exe x abc.7z -aoa -oC:\Temp system\*.exe
将是提取system文件夹中仅包含 .exe 文件的最终命令。 - ρss7z e abc.7z "system/*.exe"
。 - Roman