【问题标题】:Parse all the xml files in a directory one by one using ElementTree使用ElementTree一一解析一个目录下的所有xml文件
【发布时间】:2013-03-18 18:01:30
【问题描述】:

我正在通过 ElementTree 在 python 中解析 XML

import xml.etree.ElementTree as ET 
tree = ET.parse('try.xml')
root = tree.getroot()

我希望解析给定目录中的所有“xml”文件。用户应该只输入目录名称,我应该能够遍历目录中的所有文件并一一解析。谁能告诉我方法。我正在使用 Linux。

【问题讨论】:

  • 您的所有文件都存在于同一个文件夹中还是存在于文件夹内的文件夹中?
  • 你可以像glob.glob('*.xml')一样使用glob,这将返回xml文件列表,并进行相应的解析
  • 它们在同一个文件夹中
  • @Abhishek,如果它们与您的代码在同一个文件夹中:对于 os.listdir(path) 中的文件名:如果不是 filename.endswith('.xml'):继续 #fullname = os. path.join(path, filename) # 是的,省略这一行 print(filename)

标签: python xml parsing elementtree


【解决方案1】:

只需在os.listdir() 上创建一个循环:

import xml.etree.ElementTree as ET
import os

path = '/path/to/directory'
for filename in os.listdir(path):
    if not filename.endswith('.xml'): continue
    fullname = os.path.join(path, filename)
    tree = ET.parse(fullname)

【讨论】:

  • @MartijnPieters 正如我昨晚发现的那样,如果你想要 10 倍的速度使用:import xml.etree.cElementTree as ET,不用担心更改任何代码。
  • @WinEunuuchs2Unix:更好的是:使用 lxml。更快、更出色的功能集。
猜你喜欢
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 2013-12-31
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多