我正在尝试阅读最新的 Wikidata 转储,同时跳过第一行,比如 100 行。
next()
有没有比重复调用更好的方法来做到这一点?
WIKIDATA_JSON_DUMP = bz2.open('latest-all.json.bz2', 'rt')
for n in range(100):
next(WIKIDATA_JSON_DUMP)
或者,有没有办法在 bash 中拆分文件,例如,使用bzcat
管道选择块到较小的文件?
您可以在 bash 中尝试以下操作,例如跳过前 10 行:
bzcat -d -c /tmp/myfile.bz2 | tail -n +11
请注意,尾部会获取您要跳过的 N+1 行数。
如果它是使用bgzip 之类的东西压缩的,您可以跳过块,但它们将包含可变数量的行,具体取决于压缩率。对于作为单个流的原始 bzip 文件,由于压缩格式的性质,我认为您别无选择,只能读取并丢弃要跳过的行。