2011-08-03 13 views
1

私は350 MB以上のデータを持つフォーマットの悪いxmlファイルを持っています。基本的には、すべてのデータを1行にまとめました。私は人生を楽にするためにこれを新しいファイルにpretty_printしようとしていますが、記憶上の問題にぶつかっています。私はここで何か悪いことをしていますか?これを回避する方法はありますか?私のコンピュータは、4GBのRAMを持っているとされクアッドコアi5-2410M(2.30Ghz)lxml pretty_print pythonメモリオーバーロード

import os 
from lxml import etree 

parser = etree.XMLParser(remove_blank_text=True) 
tree = etree.parse('filename',parser) 
f = open('filename',"w") 
f.write(etree.tostring(tree,pretty_print=True)) 
f.close() 
+0

文書をフォーマットしたいだけなら、 'xmlformat'は素晴らしいユーティリティです:http://www.kitebird.com/software/xmlformat/ – GaretJax

答えて

4

あなたはファイルハンドルを直接writeメソッドを使用してではなく、ToStringメソッド呼び出ししようとする場合があります。これに

f.write(etree.tostring(tree,pretty_print=True)) 

:この行を変更し

tree.write(f, pretty_print=True) 

これがうまくいけば半分にメモリ使用量を減らす必要があります。

+0

ありがとう、それで私の問題は解決しました –

関連する問題