来自Python的7zip命令

2024-04-19 14:30:54 发布

您现在位置:Python中文网/ 问答频道 /正文

关于这个话题已经有了一个post的答案,但是对于我在这里再次提出的基本问题,它没有一个明确的答案:

如何从Python生成7zip命令?

尝试使用subprocess模块时,我实现了以下运行但什么也不做(根据我的判断):

import subprocess
cmd = ['7z', 'a', '"Test.7z"', '"Test"', '-mx9']
subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)

我知道下面的7zip命令可以工作,正如我在Windows命令行上测试过的那样:

7z a "Test.7z" "Test" -mx9

我如何从Python实现这个简单的7zip命令?


Tags: 模块答案testimport命令cmdstderrstdout
3条回答

下面的一个适合我,python 3.5.2,windows8.1,7z path添加到系统

    rc = subprocess.call(['7z', 'a', output_filename + '.zip', '-mx9', '-pSecret^)'] + [src_folder + '/'])

有两个参数,-mx9表示最大压缩,-pSecret^)表示密码为“Secret^”,对于windows系统,“^”表示转义为“)”,但是在解压缩时,需要键入“^”。

如果没有“^”,windows系统将不会在7z.exe创建zip文件时应用密码。

另外,如果要使用“-mhe”开关,则需要7z格式的文件,而不是zip格式的文件。

import subprocess
cmd = ['7z', 'a', 'Test.7z', 'Test', '-mx9']
sp = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)

可以使用以下命令将其包装为函数:

import subprocess

def sevenzip(filename, zipname, password):
    print("Password is: {}".format(password))
    system = subprocess.Popen(["7z", "a", zipname, filename, "-p{}".format(password)])
    return(system.communicate())

这绝对是我试过和测试过的效果。如果要调整它(即提取文件),则可以使用以下命令:

def extractfiles(zipname):
    system = subprocess.Popen(["7z", "e", zipname])
    return(system.communicate())

试试看,让我知道你是怎么过的。

请记住,这是针对Linux的。在Windows中,将“7z”替换为“C:\ Program Files\7-Zip\7z.exe”(我认为这是正确的位置)。

相关问题 更多 >