向嵌套的zip python中添加文件

2024-10-03 19:28:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个child.zip在另一个zip master.zip 我想将文件str.txt添加到儿童.zip你知道吗

结构如下:

  • master.zip
    • child.zip
      • str.txt

以下是我的尝试:

def writeadapt():
    with zipfile.ZipFile('master.zip','a', zipfile.ZIP_DEFLATED) as zfile:
        for name in zfile.namelist():
            if re.search(r'\.zip$', name ) != None:
                zfiledata = io.BytesIO(zfile.read(name))
                with zipfile.ZipFile(zfiledata , 'a', zipfile.ZIP_DEFLATED) as zfile2:
                    zfile2.writestr('str.txt',"hello")
                    zfile2.close()

代码不添加文件字符串.txt至儿童.zip. 你知道吗

向嵌套zip添加文件的最佳方法是什么?你知道吗


Tags: 文件namemastertxtchildwithzip儿童
1条回答
网友
1楼 · 发布于 2024-10-03 19:28:48

I have a child.zip inside another zip master.zip I want to add a file str.txt to the child.zip

如果可能的话,你需要重新考虑一下这个设计。你知道吗

将文件添加到ZIP存档需要写入存档。但是,存储在ZIP存档中的文件是不可写的,它们可以用新文件替换,但不能就地更新,因此无法直接将文件写入嵌套的ZIP存档。你知道吗

您的代码没有按预期工作,因为更新zfiledata中的ZIP存档不会更新父存档中的相应数据。(毕竟,它只是一个BytesIO对象)您需要将该数据写回父存档以持久化更改。但是,正如我前面提到的,这将是一个缓慢而昂贵的操作,特别是如果归档文件很大,应该避免这样做。你知道吗

相关问题 更多 >