簡體   English   中英

TypeError:iter()不接受關鍵字參數

[英]TypeError: iter() takes no keyword arguments

我正在使用xml.etree.cElementTree ,關於官方文檔 -想要在Element查找Element

$ python --version
Python 2.7.8

我的劇本:

#!/usr/bin/env python

import os, re

import xml.etree.ElementTree as ET

XML_FILE = '/cygdrive/****.csproj'

try:
    tree = ET.ElementTree(file=XML_FILE)
    root = tree.getroot()

    print type(root)

    for item in root.iter(tag='OutputPath'):
        print item.tag, item.attrib, item.text
    ....

但是,當我運行它時-有一個錯誤:

$ ./xm_par.py
<type 'Element'>
Traceback (most recent call last):
  File "./xm_par.py", line 21, in <module>
    for item in root.iter(tag='OutputPath'):
TypeError: iter() takes no keyword arguments

我在這里想念什么?

這是一個已知的錯誤; API的C加速版本缺少對tag參數作為關鍵字參數的支持 參見問題#16849

使用_elementtree C加速器時,Element。{get,iter}不處理關鍵字參數。

該錯誤已在Python 3.3及更高版本中修復,但尚未在Python 2.7中修復。

您可以省略關鍵字,而將參數作為位置傳遞:

for item in root.iter('OutputPath'):

演示:

>>> import xml.etree.cElementTree as ET
>>> tree = ET.fromstring('''\
... <root>
...     <OutputPath></OutputPath>
... </root>
... ''')
>>> tree.iter(tag='OutputPath')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: iter() takes no keyword arguments
>>> tree.iter('OutputPath')
<generator object iter at 0x1045cc5a0>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM