此主题已有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命令?
答案 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的文件格式。