使用Python解析目录中所有文件的XML标记值

使用Python解析目录中所有文件的XML标记值,python,xml,python-2.7,xml-parsing,Python,Xml,Python 2.7,Xml Parsing,尽管之前存在类似的问题,但我还是不能完全做到这一点。帮助是值得的 我正在尝试递归解析目录/子目录中的所有xml文件 我正在查找标记“操作员id”显示的值 示例源XML: <Operators> <Operator id="OId_LD"> <OperatorCode>LD</OperatorCode> <OperatorShortName>ARRIVA THE SHIRES LIMIT</OperatorSh

尽管之前存在类似的问题,但我还是不能完全做到这一点。帮助是值得的

  • 我正在尝试递归解析目录/子目录中的所有xml文件
  • 我正在查找标记“操作员id”显示的值
示例源XML:

<Operators>
   <Operator id="OId_LD">
   <OperatorCode>LD</OperatorCode>
   <OperatorShortName>ARRIVA THE SHIRES LIMIT</OperatorShortName>
这是我正在运行的终端命令:

python -c "execfile('xml_tag.py'); jarv('/Users/admin/Projects/AtoB_GTFS')"
这就是我收到的错误:

tfl_64-31_-37434-y05.xml

encodings.xml
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "xml_tag.py", line 8, in jarv
    dom=parse(targetfile)
  File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/minidom.py", line 1918, in parse
    return expatbuilder.parse(file)
  File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/expatbuilder.py", line 922, in parse
    fp = open(file, 'rb')
IOError: [Errno 2] No such file or directory: 'encodings.xml'
(frigo)andytmac:AtoB_GTFS admin$ python -c "execfile('xml_tag.py'); jarv('/Users/admin/Projects/AtoB_GTFS')"
tfl_64-31_-37434-y05.xml
encodings.xml
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“xml_tag.py”,第8行,jarv格式
dom=parse(targetfile)
文件“/usr/local/ceral/python/2.7.8_1/Frameworks/python.framework/Versions/2.7/lib/python2.7/xml/dom/minidom.py”,第1918行,在parse中
返回expatbuilder.parse(文件)
文件“/usr/local/ceral/python/2.7.8_1/Frameworks/python.framework/Versions/2.7/lib/python2.7/xml/dom/expatbuilder.py”,第922行,在parse中
fp=打开(文件“rb”)
IOError:[Errno 2]没有这样的文件或目录:“encodings.xml”
(frigo)andytmac:AtoB_GTFS admin$python-c“execfile('xml_tag.py');jarv('/Users/admin/Projects/AtoB_GTFS')”
tfl_64-31_-37434-y05.xml
如果我在“打印目标文件”行之后注释掉代码,它会列出我拥有的所有xml文件

谢谢你的帮助


Andy

您没有看到正确的位置(相对路径):当您对os.walk(目标文件夹)中的根目录、目录和文件使用
时,
文件是目录
根目录中的文件名列表,而不是其绝对路径

通过
dom=parse(os.sep.join(root,targetfile))

encodings.xml
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "xml_tag.py", line 8, in jarv
    dom=parse(targetfile)
  File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/minidom.py", line 1918, in parse
    return expatbuilder.parse(file)
  File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/expatbuilder.py", line 922, in parse
    fp = open(file, 'rb')
IOError: [Errno 2] No such file or directory: 'encodings.xml'
(frigo)andytmac:AtoB_GTFS admin$ python -c "execfile('xml_tag.py'); jarv('/Users/admin/Projects/AtoB_GTFS')"
tfl_64-31_-37434-y05.xml