【问题标题】:Python ElementTree : partially parsing a large filePython ElementTree:部分解析大文件
【发布时间】:2013-05-23 11:02:49
【问题描述】:

我有一个大的 XML 文件,大致结构(按此顺序):

<document>
   <interesting_part>
     ...
   </interesting_part>
   <foo>
     ...
     60000 lines
     ...
   </foo>
</document>

我的程序是:

from xml.etree import ElementTree as et
f=open(path_f)
tree=et.parse(f)
f.close()
# retreive infos from tree...

我只对文件的前几个块感兴趣,但性能很低,因为 et.parse() 会加载整个文件。

如何加载文件只到?

我想到了类似的东西:

class My_Parser(et.XMLParser):
    ????
my_parser = My_Parser()
tree=et.parse(f, my_parser)

提前感谢您, 埃里克。

【问题讨论】:

    标签: python performance parsing partial elementtree


    【解决方案1】:

    改用iterparse() function,当你有你想要的东西时停止迭代:

    for event, element in et.iterparse(f):
        if element.tag == 'interesting_part':
            # `element` is the complete <interesting_part> element, with children
            # process it
            break  # ends parsing.
    

    【讨论】:

      猜你喜欢
      • 2015-09-22
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多