Python 使用zipmodule重命名zip文件夹中的文件

Python 使用zipmodule重命名zip文件夹中的文件,python,Python,我想知道是否有人知道如何使用python的zip模块将我的zip文件夹(“fw/resources/logo.png”)中名为“logo.png”的文件重命名为(“fw/resources/logo.png.bak”) 我认为这是不可能的:zipfile模块没有实现这一点的方法,正如zip文件的内部结构中所提到的,这是一个障碍。所以你必须解压,重命名,压缩 更新:刚找到 这应该对您有所帮助。正如rocksportrocker所提到的,您不能从zipfile存档中重命名/删除文件。您可以迭代zip

我想知道是否有人知道如何使用python的zip模块将我的zip文件夹(“fw/resources/logo.png”)中名为“logo.png”的文件重命名为(“fw/resources/logo.png.bak”)

我认为这是不可能的:zipfile模块没有实现这一点的方法,正如zip文件的内部结构中所提到的,这是一个障碍。所以你必须解压,重命名,压缩

更新:刚找到
这应该对您有所帮助。

正如rocksportrocker所提到的,您不能从zipfile存档中重命名/删除文件。您可以迭代zipfile中的文件,并有选择地添加所需的文件。因此,要从zipfile中删除某个目录,您不会将它们复制到新的zipfile。可能是这样的:

source = ZipFile('source.zip', 'r')
target = ZipFile('target.zip', 'w', ZIP_DEFLATED)
for file in source.filelist:
    if not file.filename.startswith('directory-to-remove/'):
        target.writestr(file.filename, source.read(file.filename))
target.close()
source.close()

因为这会将所有文件读入内存,所以对于大型归档来说,这不是一个理想的解决方案。对于小档案,这是广告宣传的。

你不能使用内置的
zipfile
模块。删除可以使用shutil.rmtree的os.rmdir完成,但是如果你只想重命名一个文件夹,我们可以使用shutil.move。实际上,我如何删除zip文件夹中的文件?它真的会将整个文件加载到内存中吗?