【发布时间】:2020-11-02 05:54:05
【问题描述】:
我见过 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 个文件似乎更少,但对于数十亿个文件的大量集合,这可能是一个巨大的改进。
【问题讨论】:
-
先读后写有什么问题?
-
@DYZ 我的动机是避免花费额外的时间打开文件两次。 1 到 2 个文件似乎更少,但对于数十亿个文件的大量集合,这可能是一个巨大的改进
-
存档文件是压缩文件,压缩是基于里面包含的数据。您无法修改压缩。您可以将压缩文件展开并在修改后再次将其压缩回来。对于大量文件,您可以并行化处理,但不能缩短压缩。
-
@TheGeorgeous 实际上,您可以扩展 gzip 压缩文件。阅读文档。
-
AFAIK 与从头开始实际压缩整个内容相比,压缩仍然很糟糕stackoverflow.com/questions/18097107/…
标签: python-3.x file gzip