首页 文章

来自Python的7zip命令

提问于
浏览
7

关于这个话题已经有了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 回答

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

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

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

  • 4

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

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

    有两个参数,-mx9表示最大压缩,-pSecret ^)表示密码为“Secret ^)”,“^”表示对于windows系统是“)”,但是当你解压缩时,它需要输入“^” .

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

    此外,如果你想使用“-mhe”开关,你需要7z而不是zip的文件格式 .

相关问题