Python不调用fucntion

时间:2019-06-19 11:54:03

标签: python-3.x xml-parsing

这是一个非常奇怪的问题。 Python 3.7。

from xml.etree import ElementTree as ET


def iter_elements_by_name_please(handle, name):
    print('It works')
    events = ET.iterparse(handle, events=("start", "end",))
    _, root = next(events)  # Grab the root element.
    for event, elem in events:
        if event == "end" and elem.tag == name:
            yield elem
            root.clear()  # Free up memory by clearing the root element.


iter_elements_by_name_please('test.xml', 'gabm')

这样的代码仅返回0,在调试器中,我看到它没有起作用。如果我删除了for周期,它将开始正常工作。在不同的操作系统上的2台differnet机器上进行了尝试。

1 个答案:

答案 0 :(得分:2)

您使用yield的事实意味着iter_elements_by_name_please是一个返回generator的函数(就像range一样)。

您可以在official wiki page for Generators

上阅读更多内容

您需要对其进行迭代以获取元素。

尝试:

for elem in iter_elements_by_name_please('test.xml', 'gabm'):
    print(elem)