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.