使用 glob 和 lxml 解析 xml 的文件夹
Parsing a folder of xml using glob and lxml
我在尝试使用 python 3 和 lxml
.
解析包含有效 xml 文件 (*.ditamap)
的文件夹时遇到了一些困难
返回的错误是
"lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1"
我的代码
import glob
import lxml.etree as et
for file in glob.glob('*.ditamap'):
with open(file) as xml_file:
#tree = et.parse("0579182.ditamap")
tree = et.parse(xml_file)
print (et.tostring(tree, pretty_print=True))
et.parse
在我直接传递文件名时起作用,但在传递文件变量时不起作用。
我做错了什么?似乎有某种 IO 错误或 tpye 不匹配,但我看不出我做错了什么...
et.parse 需要一个文件名,但您给它的是一个打开的文件。尝试传递您的 file
变量。
import glob
import lxml.etree as et
for f in glob.glob('*.ditamap'):
tree = et.parse(f)
print (et.tostring(tree, pretty_print=True))
您可能要考虑使用 glob.iglob,因为您只是将它用作迭代器。
编辑:重读 et.parse
可以接受文件对象。不过还是试试吧。
我在尝试使用 python 3 和 lxml
.
(*.ditamap)
的文件夹时遇到了一些困难
返回的错误是
"lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1"
我的代码
import glob
import lxml.etree as et
for file in glob.glob('*.ditamap'):
with open(file) as xml_file:
#tree = et.parse("0579182.ditamap")
tree = et.parse(xml_file)
print (et.tostring(tree, pretty_print=True))
et.parse
在我直接传递文件名时起作用,但在传递文件变量时不起作用。
我做错了什么?似乎有某种 IO 错误或 tpye 不匹配,但我看不出我做错了什么...
et.parse 需要一个文件名,但您给它的是一个打开的文件。尝试传递您的 file
变量。
import glob
import lxml.etree as et
for f in glob.glob('*.ditamap'):
tree = et.parse(f)
print (et.tostring(tree, pretty_print=True))
您可能要考虑使用 glob.iglob,因为您只是将它用作迭代器。
编辑:重读 et.parse
可以接受文件对象。不过还是试试吧。