Как использовать подпроцесс для удаления файла в папке zip с использованием Python - PullRequest
0 голосов
/ 24 января 2019

[Python 2.6.5] Простой вопрос, но, похоже, не могу найти никакой документации или предыдущих вопросов, отвечающих на мою проблему. Я пытаюсь удалить 2 файла в папке ZIP (его 2 папки глубоко в папке ZIP, если это имеет значение). Я хочу использовать подпроцесс для вызова 7Zip, чтобы удалить файлы, но понятия не имею, как даже запустить этот процесс. На данный момент я могу только открыть приложение. В идеале, я хотел бы запустить скрипт python, жестко запрограммировать имена файлов в скрипте, и чтобы 7zip просто автоматически удалял эти файлы, не открывая приложение, если это возможно.

Что у меня так далеко:

import subprocess, os


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

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

  • Примечание: спасибо всем за помощь. Потребности клиента изменились, поэтому мне больше не нужно использовать эту логику.

Ответы [ 2 ]

0 голосов
/ 26 января 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
0 голосов
/ 24 января 2019

Вам необходимо использовать версию командной строки из 7zip. И затем, согласно этой документации , вы сможете удалять файлы, например, так.

7z d archive.zip deleteme.ext

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

...