我想解析使用python的XML文件。但問題是,xml文件大小約爲30GB。所以,需要花費數小時才能執行:xml解析python中的大數據
tree = ET.parse('Posts.xml')
在我的xml文件中,有數百萬個根元素。有什麼辦法可以讓它更快嗎?我不需要所有的孩子解析。即使是第一個100,000也沒關係。我需要的只是設置解析深度的限制。
我想解析使用python的XML文件。但問題是,xml文件大小約爲30GB。所以,需要花費數小時才能執行:xml解析python中的大數據
tree = ET.parse('Posts.xml')
在我的xml文件中,有數百萬個根元素。有什麼辦法可以讓它更快嗎?我不需要所有的孩子解析。即使是第一個100,000也沒關係。我需要的只是設置解析深度的限制。
您將需要一種不會將所有內容加載到內存中的XML解析機制。
您可以使用ElementTree.iterparse
或者您可以使用Sax。
以下是Python的一些XML processing tutorials的頁面。
更新:正如@marbu在評論中所說的那樣,如果您使用ElementTree.iterparse
,請務必在您完成處理後清除內存中的元素use it in such a way。
如果您決定使用iterparse,請確保您不會錯過關於[增量分析]的這一段(http://effbot.org/zone/element-iterparse.htm#incremental-parsing)。 – marbu 2015-01-26 22:56:25
它的工作。謝謝。 – user1151324 2015-01-27 08:11:26
您需要在較低級別編碼,但可以使用[sax解析器](https://wiki.python.org/moin/Sax)。 – mgilson 2015-01-26 22:38:54