来自Python的7zip命令

时间:2012-06-16 21:18:29

标签: python 7zip

此主题已有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命令?

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:4)

您可以使用以下方法将其包装为函数:

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”交换(我认为这是正确的位置)。

答案 2 :(得分:2)

以下一个适用于我,python 3.5.2,windows8.1,7z路径添加到系统

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

使用两个参数,-mx9表示最大压缩,-pSecret ^)表示密码是" Secret ^)" ," ^"对于Windows系统来说是")"但是当你解压缩时,它需要输入" ^"。

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

另外,如果你想使用" -mhe"切换,你需要7z而不是zip的文件格式。