首页 > 解决方案 > 编辑 zip 文件(在内存中)

问题描述

我需要重命名(和编辑)zip 文件中的文件。到目前为止,我为重命名所做的是:

subprocess.call(["unzip", zipfile, f])
subprocess.call(["zip", "--delete", zipfile, f])
subprocess.call(["mv", f, f_new])
subprocess.call(["zip", "-qq", "-y", "--move", zipfile, f_new])

这会使工作目录变得混乱,并且通常看起来像是糟糕的编码。理想情况下,我有办法在 python 中执行此操作,最好完全在内存中。我查看了该zipfile模块,但是这似乎不是很直观或有据可查。它似乎还缺少一些基本操作,例如删除文件(使用 ZipFile 模块从 zipfile 中删除文件)。还使用损坏的存档附加文件zipfile(我猜它使用自己的压缩)。

有没有比系统调用更合理的重命名/删除/添加/编辑压缩文件的方法?

从头开始创建一个新的 zip 文件并重新压缩所有内容似乎比系统调用更糟糕。

标签: pythonpython-3.xzipzipfile

解决方案


我在这里找到了一个可能的解决方案:https : //superuser.com/a/687167/1171118 似乎您可以通过访问 file.filename 来更改文件名。在解决方案中,该人事后提取了文件,但由于您不想这样做,所以不要复制该步骤。

os.rename是另一种选择,我不知道它是否适用于 zip 内的文件。


推荐阅读