微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有lxml etree解析函数的IOError

如何解决带有lxml etree解析函数的IOError

| 我有一个类似的逻辑:
for root,dirs,files in os.walk(os.getcwd()):
    if \"info.xml\" in files:
        root = lxml.etree.parse(\"%s/info.xml\" % root)
        tag = root.xpath(\"/info/tagname\")[0].text
解析当前路径中很深的一个“ 1”时,遇到错误消息:
    Traceback (most recent call last):
  File \"/home/work/mergefile.py\",line 365,in <module>
  File \"/home/work/mergefile.py\",line 344,in merge_ejb_files
  File \"/home/work/mergefile.py\",line 63,in __init__
  File \"/home/work/mergefile.py\",line 78,in _parse_info2doc
  File \"lxml.etree.pyx\",line 2698,in lxml.etree.parse (src/lxml/lxml.etree.c:49590)
  File \"parser.pxi\",line 1491,in lxml.etree._parseDocument (src/lxml/lxml.etree.c:71205)
  File \"parser.pxi\",line 1520,in lxml.etree._parseDocumentFromURL (src/lxml/lxml.etree.c:71488)
  File \"parser.pxi\",line 1420,in lxml.etree._parseDocFromFile (src/lxml/lxml.etree.c:70583)
  File \"parser.pxi\",line 975,in lxml.etree._BaseParser._parseDocFromFile (src/lxml/lxml.etree.c:67736)
  File \"parser.pxi\",line 539,in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:63820)
  File \"parser.pxi\",line 625,in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:64741)
  File \"parser.pxi\",line 563,in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:64056)
IOError: Error reading file \'/home/work/ci/case/dc_daily/dc/213577/223922/223958/792536/info.xml\': Failed to load external entity \"/home/work/ci/case/dc_daily/dc/213577/223922/223958/792536/info.xml\"
但是文件“ 3”存在,我可以在ipython IDE下用lxml解析它 你知道是什么问题吗?如果您知道,请帮助我! 谢谢!     

解决方法

        根据上面的评论,这是我的解决方案。我正在打开文件以供读取,它们在关闭后立即关闭,因此我没有达到1024个文件的限制。
import lxml.etree as etree
for root,dirs,files in os.walk(os.getcwd()):
    if \"info.xml\" in files:
        with open(\'%s/info.xml\'%root) as processfile: #use \'rb\' if necessary
            xml = etree.parse(processfile)
            tag = root.xpath(\"/info/tagname\")[0].text
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。