7zip команды из Python

есть в должности по этой теме уже, но у него нет явного ответа на фундаментальный вопрос, который я здесь переспрашиваю:

Как вы делаете команды 7zip из Python?

попытка использовать подпроцесс модуль, я реализовал следующее, которое работает, но ничего не делает (из того, что я могу сказать):

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

Как я могу реализовать эту простую команду 7zip из Python?

3 ответов


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

Вы можете обернуть его в функцию с помощью следующего:

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" (я думаю, что это правильное место).


следующий работает для меня, python 3.5.2, windows8.1, 7z путь добавлен в систему

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

с двумя параметрами, - mx9 означает максимальное сжатие, - pSecret^) означает, что пароль " Secret^)", " ^ "- это escape для") "для системы windows, но когда вы распакуете, ему нужно будет ввести"^".

без " ^ " система windows не будет применять пароль, когда 7z.exe создание zip-файла.

кроме того, если вы хотите использовать переключатель "-mhe", вам нужен формат файла в 7z вместо zip.