16

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

你如何从 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 命令?

4

3 回答 3

11
import subprocess
cmd = ['7z', 'a', 'Test.7z', 'Test', '-mx9']
sp = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
于 2012-06-16T21:47:01.483 回答
7

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

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

于 2017-04-02T15:10:08.987 回答
2

以下对我有用,python 3.5.2, windows8.1, 7z path added to system

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

有两个参数,-mx9 表示最大压缩,-pSecret^) 表示密码是 "Secret^)" , "^" 是 windows 系统中 ")" 的转义,但是解压时需要输入 "^" .

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

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

于 2016-10-20T21:15:21.577 回答