/ / Подпроцес за Python на zip.exe - python, zip, subprocess

Python подпроцесор на zip.exe - python, zip, subprocess

Имам скрипт на Python, който е компресирал файл със следната команда:

subprocess.call(["zip", "-P", password, "-r", zipName, fileName])

Какви са аргументите за разархивиране на файла по същия начин (subprocess.call), предполагайки, че знам паролата?

Отговори:

1 за отговор № 1

-x за само когато разархивирате някои файлове.

subprocess.call(["unzip","-P",password,zipName,"-x",fileName])

Като sidenote, от unzip наръчник:

-P password

използвайте парола за декриптиране на криптиран zipfile(ако има такива). Това е нечувствие! Много мулти-потребителски операционни системи предоставят начини за всеки потребител да види текущата командна линия на всеки друг потребител; дори на самостоятелни системи винаги има заплаха над рамото наднича. Съхраняване на паролата за открит текст като част от командния ред в автоматизиран скрипт е още по-лошо. Когато е възможно, използвайте интерактивния ред, който не е ехо въведете пароли. (А когато сигурността е наистина важна, използвайте силно криптиране като Pretty Good Privacy вместо сравнително слабо шифроване, осигурено от стандартния zipfile utili- връзки.)


1 за отговор № 2

Това, което задавате, е специфичното за изпълнението (zip.exe може да е всичко), така че няма да ви дам никаква информация, която бихте очаквали.

Вместо това аз ще ви кажа как да го направите по-питонни.

За да създадете архив, направете следното:

with zipfile.ZipFile(zipname, "w") as z:
z.setpassword(b"asdf")
z.write(filename)

съответно да извлече:

with zipfile.ZipFile(zipname) as z:
z.setpassword(b"asdf")
z.extractall()

където ASDF е вашата парола. Забележка, от която се нуждаете байта, не ул - че предполагате, че използвате Python 3. Ако използвате Python 2, не пишете водещия b.