0

我正在尝试阅读最新的 Wikidata 转储,同时跳过第一行,比如 100 行。

next()有没有比重复调用更好的方法来做到这一点?

WIKIDATA_JSON_DUMP = bz2.open('latest-all.json.bz2', 'rt')

for n in range(100):
    next(WIKIDATA_JSON_DUMP)

或者,有没有办法在 bash 中拆分文件,例如,使用bzcat管道选择块到较小的文件?

4

2 回答 2

1

您可以在 bash 中尝试以下操作,例如跳过前 10 行:

bzcat -d -c /tmp/myfile.bz2 | tail -n +11

请注意,尾部会获取您要跳过的 N+1 行数。

于 2021-07-11T14:55:33.590 回答
1

如果它是使用bgzip 之类的东西压缩的,您可以跳过块,但它们将包含可变数量的行,具体取决于压缩率。对于作为单个流的原始 bzip 文件,由于压缩格式的性质,我认为您别无选择,只能读取并丢弃要跳过的行。

于 2021-07-06T14:24:10.963 回答