【问题标题】:How do I use subprocess to delete a file in a zip folder using Python如何使用子进程使用 Python 删除 zip 文件夹中的文件
【发布时间】:2019-01-24 16:07:41
【问题描述】:

[Python 2.6.5] 简单的问题,但似乎找不到任何文档或以前的问题来回答我的问题。我正在尝试删除 ZIP 文件夹中的 2 个文件(如果重要的话,它的 2 个文件夹位于 ZIP 文件夹的深处)。我想使用子进程调用 7Zip 来删除文件,但不知道如何启动该进程。截至目前,我只能打开应用程序。理想情况下,我想运行 python 脚本,将文件名硬编码到脚本中,并让 7zip 自动删除这些文件而无需打开应用程序。

到目前为止我所拥有的:

import subprocess, os


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

这成功打开了应用程序,但我想运行它并让它自动删除文件,如果可能的话甚至不打开。

  • 注意:感谢大家的帮助。客户的要求最终发生了变化,所以我不再需要使用这个逻辑了。

【问题讨论】:

  • 为什么使用子进程而不是zipfile 模块?
  • zipfile 模块不支持从我研究过的所有内容中删除 zip 文件夹中的文件。

标签: python io subprocess 7zip


【解决方案1】:

你需要使用7zip的command line version。然后根据this documentation,你应该可以像这样删除文件了。

7z d archive.zip deleteme.ext

注意:对于可能认为 Python 的 zipfile 模块是一个很好的解决方案的任何人,我查看了该模块,但它似乎不支持从存档中删除文件。

【讨论】:

  • 非常感谢我先生的评论,我想知道您是否可以显示我应该输入的内容才能使其正常工作。我正在尝试这个,但它显然是错误的。 subprocess.run(" 7z d bin3.zip product.json")我对这些模块/编码很陌生。
  • 如果在命令行运行7z d bin3.zip product.json会发生什么?
【解决方案2】:

类似这样的:

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

【讨论】:

    猜你喜欢
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多