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