私はファイルセットにアクセスできます(それぞれ約80-800mb)。残念ながら、すべてのファイルには1行しかありません。この行には、厳密に1つのJSONオブジェクト(リストのリスト)が含まれています。小さなJSONオブジェクトにロードして解析するには、どうすればよいでしょうか?大きなJSONリストをPythonで読み込むにはどうすればよいですか?
答えて
すでに同様の投稿hereがあります。ここでは、彼らが提案された解決策は、次のとおりです。
import json
with open('file.json') as infile:
o = json.load(infile)
chunkSize = 1000
for i in xrange(0, len(o), chunkSize):
with open('file_' + str(i//chunkSize) + '.json', 'w') as outfile:
json.dump(o[i:i+chunkSize], outfile)
が殺されました。これはPythonシェルが言ったことです – ashish
あなたがメモリに全体のリストを読み込む避けるためにしようとしている場合は、あなたが最初のテキストとしてファイルを処理できます。
は、オープンを追跡するために、スタックを使用し、括弧/引用符の閉じ方。オープナーのいずれか、または現在の近くの文字列をスキャンします。テキストをスキャンするときは、テキストをより近くに見るだけです。開幕戦を読んだときに1つを押すと、開幕戦を読んだときにポップする。 、{
>]
- - >}
と"
- >"
JSONのためのフルセットは[
です。あなたは\"
を除外する必要があります。 ]
が発生し、スタックが唯一一致[
をポップしたあとに1つのアイテム(トップレベルを「[」)持っている時はいつでもあなたが次にhttp://www.json.org/
でスペックを確認することができ、その後、あなたはそれが新しい行を開始する時間です知っています。
最後に、最初のと最後の]
が出力に表示されないようにする必要があります。
これにより、リストの各項目ごとに別々のJSONオブジェクトが作成され、それぞれがファイルの別々の行に表示されます。
Python JSONライブラリを調べると、JSONも解析する関数があるはずです。パブリックインターフェイスの一部ではないものの、それらを活用することができます。
もちろん、JSONライブラリを使用して文字列を読み込んだ後、もう1つの答えに応じてアイテム(または複数のアイテム)をダンプすることで、同じ結果を達成できます。
完全に良いjsonモジュールが標準ライブラリに付属しているときに、この低レベルのスキャン方法が必要なのはなぜですか? @リンカの答えを参照してください – jdi
私は彼が実際にメモリに格納されているjsonオブジェクトを持つメモリオーバーヘッドを持っていないと思う。 jsonライブラリの公開インタフェースはそれを許しません。私は彼がそのライブラリをハックし、ヘルパー関数のいくつかを使用することができますが、私はそれらを見ていませんが、言及しています。 – chees
はい、他の回答に示唆されているように、メモリの懸念は実際には一度のバッチ処理では問題になりません。小さなオブジェクトにバッチ処理するだけの生産的なソリューションである必要はありません。 – jdi
モジュールpandas 0.21.0
は、read_json
の一部としてchunkksizeをサポートするようになりました。
import pandas as pd
chunks = pd.read_json(file, lines=True, chunksize = 100)
for c in chunks:
print(c)
- 1. jsonのローカルファイルを読み込むにはどうすればいいですか?
- 2. ランダムなレベルを読み込むにはどうすればよいですか?
- 3. PythonでWebページを読み込んでフラットファイルに書き込むにはどうすればいいですか?
- 4. QtDesignerでQMovieを読み込むにはどうすればよいですか?
- 5. Blockly変数をプログラムで読み込んで読み込むにはどうすればよいですか?
- 6. iOSアプリケーションでファイルを読み込んで読み込むにはどうすればよいですか?
- 7. jsonファイルをどのようにしてPythonに読み込むのですか?
- 8. Pythonを使用して大きなcsvファイルを書き込むにはどうすればよいですか?
- 9. オブジェクトをファイルに書き込んで読み込むにはどうすればよいですか?
- 10. 大きなJSON文字列の特定のセクションを読むにはどうすればよいですか?
- 11. play-jsonで空のケースクラスを作成して読み込むにはどうすればよいですか?
- 12. Python 3でGamemaker Studioからバッファを読み込むにはどうすればよいですか?
- 13. 大きなJSONデータ[2GB]をPHPに読み込むには?
- 14. JavaScriptを.jsonファイルから読み込むにはどうすればよいですか?
- 15. JSONファイルをDataframeに読み込むにはどうすればよいですか?
- 16. ファイルから複数の行のデータをPythonに読み込むにはどうすればよいですか?
- 17. パイプにさらに値を書き込んで読み込むにはどうすればいいですか?
- 18. phpのファイルを読み込むにはどうすればいいですか?
- 19. c# - コンソールからcharを読み込んで書き込むにはどうすればいいですか?
- 20. 「プロセス名」+アドレスのようなポインタから読み込むにはどうすればよいですか?
- 21. JAVAで非常に大きなファイル(4GBと言う)を効率的に読み込むにはどのようにすればよいでしょうか?
- 22. AngularでJSONファイルを読むにはどうすればよいですか?
- 23. 大きなデータセットのCSVに不明なキーを書き込むにはどうすればよいですか?
- 24. Pythonはリストにファイルを読み込む -
- 25. XDocumentに読み込むときにエンティティを解決するにはどうすればよいですか?
- 26. プロパティファイルを読み込むようにLog4jを設定するにはどうすればよいですか?
- 27. ページを開くときにイメージを垂直に読み込むにはどうすればよいですか?
- 28. ファイルのパスを読み取るときにコードワイン(イオン)でファイルに書き込んで読み込むにはどうすればよいですか?
- 29. ウェブサイトの読み込みをよりきれいにするにはどうすればよいですか?
- 30. アンドロイドでJSONオブジェクトの自動読み込みを実装するにはどうすればよいですか?
私はあなたが少なくとも[標準jsonモジュール](http://docs.python.org/library/json.html)と考えています。 – C2H5OH
[95MBのJSONアレイを分割して小さなチャンクに分割するのは可能でしょうか?](http://stackoverflow.com/questions/7052947/split-95mb-json-array-into-smaller-chunks) –
@ C2H5OH - はい、私は全体をメモリにロードしないようにしています。 –