Как да използвам подпроцес за изтриване на файл в zip папка с помощта на Python

[Python 2.6.5] Прост въпрос, но изглежда не мога да намеря никаква документация или предишни въпроси, отговарящи на моя проблем. Опитвам се да изтрия 2 файла в ZIP папка (двете му папки дълбоко в ZIP папката, ако това има значение). Искам да използвам подпроцес, за да извикам 7Zip за изтриване на файловете, но нямам представа как дори да стартирам този процес. Засега мога да отворя само приложението. В идеалния случай бих искал да стартирам скрипта на python, имената на файловете да са твърдо кодирани в скрипта и 7zip просто автоматично да изтрие тези файлове, без приложението изобщо да се отваря, ако е възможно.

Какво имам досега:

import subprocess, os


rawLocation = 'SomeLocation\7-ZipPortable.exe'
subprocess.Popen([rawLocation])

Това успешно отваря приложението, но бих искал да стартирам и автоматично да изтрива файлове, без дори да отваря, ако е възможно.

  • Забележка: Благодаря за помощта на всички. Изискванията на клиента в крайна сметка се промениха, така че вече не е необходимо да използвам тази логика.

person Furball177    schedule 24.01.2019    source източник
comment
Защо да използвате подпроцес вместо модула zipfile?   -  person Barmar    schedule 24.01.2019
comment
Модулът zipfile не поддържа изтриването на файлове в zip папката от всичко, което съм проучвал.   -  person Furball177    schedule 24.01.2019


Отговори (2)


Трябва да използвате версията на командния ред на 7zip. След това според тази документация трябва да можете да изтривате файлове така.

7z d archive.zip deleteme.ext

Забележка: за всеки, който смята, че zipfile модулът на Python би бил добро решение , прегледах модула и не изглежда да поддържа изтриване на файлове от архив.

person wp-overwatch.com    schedule 24.01.2019
comment
Благодаря много за коментара, г-н Аз, чудех се дали можете да ми покажете какво точно трябва да въведа, за да работи. Опитвам това, но явно е грешно. subprocess.run(" 7z d bin3.zip product.json") Аз съм доста нов в тези модули/кодиране като цяло. - person Furball177; 24.01.2019
comment
Какво се случва, ако стартирате 7z d bin3.zip product.json от командния ред? - person wp-overwatch.com; 26.01.2019

нещо като това :

from subprocess import call

delete_me = "note.txt"
zip_file = "archive.zip"
try:
    call(['7z d', zip_file, delete_me])
except OSError:
    # handle errors here
    pass
person Fardin Allahverdi    schedule 26.01.2019