次の内容の大きな JSON ファイル db.json (> 100 Mb) があります。
{"sitters": [["9919.html", 3, 8, 19, 47, 120, 129, 359]], "yellow": [["9945.html", 791],
["9983.html", 1496], ["9984.html", 151]], "four": [["9971.html", 81, 403], ["9991.html", 37],
["9995.html", 45, 225, 337], ["9975.html", 15], ["9978.html", 100], ["9948.html", 381],
["9966.html", 228], ...
ここで、キーは単語で、値はファイル名であり、その後にファイル内でその単語が表示されるインデックスが続きます。この JSON ファイルからn個の単語をクエリし、対応するファイル名と位置を取得したいと思います。ファイルサイズが大きい場合にこれを効率的に行う方法について何か考えはありますか? 私は IJSON を見てきましたが、それを機能させることができないようです。私が試してみました:
parser = parse("db.json")
for prefix, event, value in parser:
if event == 'sitters':
print value
しかし、次のエラーが表示されるため、適切に使用する方法がわからない場合があります。
Traceback (most recent call last):
File "retriever.py", line 43, in <module>
sys.exit(main())
File "retriever.py", line 38, in main
for prefix, event, value in parser:
File "/usr/local/lib/python2.7/dist-packages/ijson/common.py", line 63, in parse
for event, value in basic_events:
File "/usr/local/lib/python2.7/dist-packages/ijson/backends/yajl2.py", line 90, in basic_parse
buffer = f.read(buf_size)
AttributeError: 'str' object has no attribute 'read'
どんな助けでも大歓迎です!