【问题标题】:Cryptic error in lxml when opening file打开文件时lxml中的神秘错误
【发布时间】:2016-07-18 07:15:40
【问题描述】:

我的代码相当简单;

f = open(r"C:\filepath\file.xml")
xml = f.read()
tree = etree.parse(xml)

运行时,我得到堆栈跟踪

tree = etree.parse(xml)
  File "src/lxml/lxml.etree.pyx", line 3427, in lxml.etree.parse (src\lxml\lxml.etree.c:79801)
  File "src/lxml/parser.pxi", line 1782, in lxml.etree._parseDocument (src\lxml\lxml.etree.c:115995)
  File "src/lxml/parser.pxi", line 1808, in lxml.etree._parseDocumentFromURL (src\lxml\lxml.etree.c:116345)
  File "src/lxml/parser.pxi", line 1712, in lxml.etree._parseDocFromFile (src\lxml\lxml.etree.c:115233)
  File "src/lxml/parser.pxi", line 1115, in lxml.etree._BaseParser._parseDocFromFile (src\lxml\lxml.etree.c:109930)
  File "src/lxml/parser.pxi", line 573, in lxml.etree._ParserContext._handleParseResultDoc (src\lxml\lxml.etree.c:103404)
  File "src/lxml/parser.pxi", line 683, in lxml.etree._handleParseResult (src\lxml\lxml.etree.c:105058)
  File "src/lxml/parser.pxi", line 611, in lxml.etree._raiseParseError (src\lxml\lxml.etree.c:103924)
IOError

这里发生了什么?

【问题讨论】:

    标签: python python-2.7 debugging error-handling lxml


    【解决方案1】:

    parse() 接受 XML 文件的路径:

    tree = etree.parse(r"C:\filepath\file.xml")
    

    目前,您的代码将 XML 的实际内容传递给 parse(),这将触发 IOError。您可以改用 fromstring() 从包含实际 XML 数据的字符串创建 Element 对象。如果需要,您可以从之前创建的 Element 创建一个 ElementTree 对象:

    f = open(r"C:\filepath\file.xml")
    xml = f.read()
    root = etree.fromstring(xml)
    tree = etree.ElementTree(root)
    

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 2018-04-21
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 2015-03-13
      相关资源
      最近更新 更多