同时读取和写入gzip文件



我见过python代码,我们首先打开一个文件来读取它,然后再次打开它并写入它。当我尝试同时执行这两项操作时,会出现错误。从文档中,我没有看到"rwb"选项。它只是创建/读取/写入/附加模式中的一种。

所以我想做的是:

with gzip.GzipFile(stage3_filepath, 'rwb') as file:
data = json.loads(file.read().decode('utf-8'))
data["articles"].extend(article_list)
json_string = json.dumps(data, ensure_ascii=False)
file.write(json_string.encode('utf-8'))

只是想知道为什么不可能这么做?还有其他选择吗?

正如其他人所问,我在这里的动机是为了避免花额外的时间打开两次文件。对于1到2个文件来说,这似乎更少,但对于以十亿为单位的大量文件集合来说,这可能是一个巨大的改进。

打开备选方案读取它,然后打开它进行追加。没有在读/写模式下打开的选项,因为不能在在中间写入gzip文件。您只能将另一个gzip成员附加到最后。

顺便说一句,如果您正在附加gzip成员,请确保它们足够大,可以从压缩中受益。至少几十K,如果不是兆字节或更大的话。

最新更新