来自Python的7zip命令

nai*_*are 11 python 7zip

关于这个主题已有一篇文章,但它没有明确回答我在这里重新提出的基本问题:

你如何从Python制作7zip命令?

尝试使用子进程模块,我实现了以下运行但没有做任何事情(从我能说的):

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

我知道以下7zip命令可以正常工作,因为我已经在Windows命令行上进行了测试:

7z a "Test.7z" "Test" -mx9
Run Code Online (Sandbox Code Playgroud)

我怎么能从Python实现这个简单的7zip命令?

nai*_*are 9

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

  • 如果`7z`产生足够的输出,则调用`sp.communicate()`否则它可能会死锁.或者只使用`subprocess.check_output()` (5认同)

Nau*_*fal 6

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

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())
Run Code Online (Sandbox Code Playgroud)

经过我的尝试和测试,这肯定可以工作。如果要进行调整,即提取文件,则可以使用以下命令:

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

试试看,让我知道你的生活。

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