0

私は次のコードセグメントを持っています

import xml.etree.cElementTree as et

fstring = open(filename).read()
tree = et.fromstring(fstring)

for el in tree.findall('tag'):
    do stuff

ただし、fstringは巨大(〜80mbsのデータ)であり、文字列をツリーに変換しようとすると、「メモリ不足」エラーが発生します。それを回避する方法はありますか、おそらく木のある種の遅延評価ですか?

ありがとう!

編集:

iterparseを使用してみましたが、iterparse呼び出しでMemoryErrorが発生します。ファイルを複数のチャンクに分割して1つずつ処理する方法はありますか?

4

1 に答える 1

2

見てくださいiterparse

たとえば、大きなファイルを解析するには、要素を処理するとすぐに要素を削除できます。

for event, elem in iterparse(source):
    if elem.tag == "record":
        ... process record elements ...
        elem.clear()
于 2012-11-06T21:38:03.917 に答える