7z的命令行,用于从存档内的特定文件夹中提取特定文件

时间:2015-08-13 09:27:21

标签: python archive 7zip

我正在编写一个Python脚本,我需要调用7z来提取保存在存档目录中的一些文件而不提取完整的存档。存档包含多个目录,我需要从特定目录中提取一些文件。

让我们说,“abc.7z”是一个包含多个目录的档案,即“temp”,“windows”,“system”,“data”。我想从目录“system”中提取一些.exe文件,因为这些.exe文件可能也存在于其他目录中,但我只对“system”中的文件感兴趣。

我需要的只是7z命令;我将弄清楚如何从脚本中调用7z。谢谢你的帮助。

2 个答案:

答案 0 :(得分:14)

您可以在命令行末尾指定文件/文件夹过滤器。有关7zip命令行命令和选项的更多详细信息,请查看this

7z.exe x [archive.7z] -o[output_dir] [filter]

e.g。 7z.exe x abc.7z -aoa -oC:\Temp system

您还可以从系统文件夹指定特定类型的文件。对于例如system\*.exe将提取.exe目录中的所有system个文件。

-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)

答案 1 :(得分:2)

从7z zip中提取特定目录的步骤:

特定目录:rootdir / firstson / second

Zip文件:test.7z

使用命令: 7z x test.7z rootdir / firstson / second