4

ElementTree では機能するが、cElementTree では機能しない小さな xml 解析 python スニペットがあります。何故ですか?

#!/usr/bin/python3

import sys
import xml.etree.cElementTree as ET

tree = ET.parse(sys.stdin)

これにより例外が発生します。

cElementTree.ParseError: no element found: line 1, column 0

このように呼び出されたとき

echo "<a><b>c</b></a>" | ./xmltest.py

編集: スニペットが python 2.7.2 では機能するが、python 3.2.2 または 3.1.4 では機能しないことに気付きました。

更新: Python 3.3 で修正されたようです

4

1 に答える 1

4

問題 14246で最近文書化されたバグに遭遇しました。修正されるまで、Python 3 の 1 つの回避策は、ストリームではなくストリームに変更sys.stdinすることです。bytestring

import sys
import xml.etree.cElementTree as ET

sys.stdin = sys.stdin.detach()
tree = ET.parse(sys.stdin)
于 2012-03-12T15:08:06.040 に答える