2015-01-26 119 views
1

我想解析使用python的XML文件。但問題是,xml文件大小約爲30GB。所以,需要花費數小時才能執行:xml解析python中的大數據

tree = ET.parse('Posts.xml') 

在我的xml文件中,有數百萬個根元素。有什麼辦法可以讓它更快嗎?我不需要所有的孩子解析。即使是第一個100,000也沒關係。我需要的只是設置解析深度的限制。

+0

您需要在較低級別編碼,但可以使用[sax解析器](https://wiki.python.org/moin/Sax)。 – mgilson 2015-01-26 22:38:54

回答

1

您將需要一種不會將所有內容加載到內存中的XML解析機制。

您可以使用ElementTree.iterparse或者您可以使用Sax

以下是Python的一些XML processing tutorials的頁面。

更新:正如@marbu在評論中所說的那樣,如果您使用ElementTree.iterparse,請務必在您完成處理後清除內存中的元素use it in such a way

+1

如果您決定使用iterparse,請確保您不會錯過關於[增量分析]的這一段(http://effbot.org/zone/element-iterparse.htm#incremental-parsing)。 – marbu 2015-01-26 22:56:25

+0

它的工作。謝謝。 – user1151324 2015-01-27 08:11:26