2016-03-23 20 views
3

私はPythonの "Python memory error"のメモリに問題があります。実際に、私はこのスクリプトを使用して、大きな.bsonファイルからデータを回復しよう:f.readでのPythonメモリエラー

with open('xxxx.bson','rb') as f: 
    data = bson.decode_all(f.read()) 

エラーメッセージ:

data = bson.decode_all(f.read()) 
MemoryError 

あなたはメモリを減らすことができ、あなたが

+4

ファイルどれくらい大きいですか?私はそれがあなたのシステムの利用可能なメモリよりも大きい大きなファイルだと思いますか?今では、メモリ内のファイルの* all *を2回読み取っています(生データの場合は1回、デコードデータの場合は1回)。 – Carpetsmoker

+0

ファイルが大きすぎる場合は、行の後に行をスキャンすることができます。 'for line in f' – Matthias

+0

ありがとうございます。 –

答えて

1

を提供することができる任意の助けてくれてありがとうdecode_file_iterに切り替えることによって消費する.1)入力としてファイル(その内容ではない)を必要とし、2)生成器を返す。

0

私はこのライブラリを使用します。https://github.com/bauman/python-bson-streaming

from bsonstream import KeyValueBSONInput 
f = open("xxxx.bson", 'rb') 
stream = KeyValueBSONInput(fh=f) 
for dict_data in stream: 
    print dict_data 
f.close() 
+0

ありがとうございます。 –

関連する問題