Python附加到带有fileobject的ZipFile,即使使用“a”模式也会截断fi

2024-03-29 11:54:36 发布

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

我创建一个打开的文件,如下所示:

self.file = open(self.gamefile, 'ab')

然后,我用ZipFile对象向它写了两次。你知道吗

with zipfile.ZipFile(self.file, 'a', zipfile.ZIP_DEFLATED) as zipf:
    zipf.writestr("file1.mcw", pickle.dumps(world))

with zipfile.ZipFile(self.file, 'a', zipfile.ZIP_DEFLATED) as zipf:
    zipf.writestr("file2.mcw", pickle.dumps(world2))

第一次写入成功,文件被写入。一旦它再次打开并打印出内容,它就会显示它,即使是“a”模式(!),已被截断。第二次写入也成功,但结果zipfile只包含file2.mcw

有什么问题?你知道吗

我知道我可以把第二个writestr放到第一个with子句中,但这是一个简化的示例,我不能这样做。你知道吗


Tags: 文件selfaswithzipzipfpicklefile2
1条回答
网友
1楼 · 发布于 2024-03-29 11:54:36

我认为你必须使用文件对象的名称,这是我测试和工作的方式:

import zipfile

my_file = open("testing.zip", 'ab')

with zipfile.ZipFile(my_file.name, "a",  zipfile.ZIP_DEFLATED) as zipf:
    zipf.write("data.txt")

with zipfile.ZipFile(my_file.name, "a", zipfile.ZIP_DEFLATED) as zipf:
    zipf.write("data_new.txt")

相关问题 更多 >