首页 > 解决方案 > 同时读取和写入一个 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 个文件似乎更少,但对于数十亿个文件的大量集合,这可能是一个巨大的改进。

标签: python-3.xfilegzip

解决方案


另一种方法是打开阅读它,然后打开它以追加。没有以读/写模式打开的选项,因为您不能在中间写入 gzip 文件。您只能将另一个 gzip 成员附加到最后。

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


推荐阅读