<?xml version="1.0" enCoding="UTF-8" ?><root> <child>abc</child></root>
我想从文件中解析它,这很有效:
with open('tst.xml') as test_xml: for _,element in lxml.etree.iterparse(test_xml,tag='child'): print element.text # prints abc as expected
但是,我尝试修改脚本然后允许它从文件或stdin解析xml并且没有成功:
fi = fileinput.input('tst.xml')for _,element in lxml.etree.iterparse(fi,tag='child'): print element.text# file "iterparse.pxi",line 371,in lxml.etree.iterparse.__init__ (src/lxml/lxml.etree.c:97283)# file "APIhelpers.pxi",line 1411,in lxml.etree._encodefilename (src/lxml/lxml.etree.c:22515)# TypeError: Argument must be string or unicode.
我不确定我做错了什么. FileInput对象在python中不是类文件对象吗?
解决方法 没有深入调查,似乎异常的原因是fileinput类不提供读取方法.为了实现我的目标,我现在最终编写了自己的包装器:
class fileinput(object): def __init__(self,filename=None,*args,**kwargs): self.file = open(filename,**kwargs) if filename and filename != "-" else sys.stdin def __enter__(self): return self.file def __exit__(self,type,value,traceback): if self.file is not sys.stdin: self.file.close() def __getattr__(self,name): return getattr(self.file,name)
我会等待更好的答案.
总结以上是内存溢出为你收集整理的Python使用lxml和fileinput全部内容,希望文章能够帮你解决Python使用lxml和fileinput所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)