[英]Open and parse multiple XML files from a folder
The Python code below works for one XML. 以下Python代码适用于一种XML。 The problem comes when I try to open and parse multiple XML files, which have a similar structure and are saved in the folder (line 4 -> data = open('[0-9].xml',"rb"). I am trying regular expressions, but I am not sure if that works for naming documents too.
当我尝试打开并解析多个具有相似结构并保存在文件夹中的XML文件时,就会出现问题(第4行-> data = open('[0-9] .xml',“ rb”)。我正在尝试使用正则表达式,但是我不确定这是否也适用于命名文档。
The name of all document is "11111.xml, 22222.xml, 33333.xml ..." and so on. 所有文档的名称为“ 11111.xml,22222.xml,33333.xml ...” ,依此类推。
import xml.etree.ElementTree as ET
import re
data = open ('[0-9].xml',"rb")
tree = ET.parse (data)
lst_jugador = tree.findall('data_panel/players/player')
for jugador in lst_jugador:
print (jugador.find('name').text, jugador.get("id"))
You can use glob
module. 您可以使用
glob
模块。
import glob
import xml.etree.ElementTree as ET
filenames = glob.glob("[0-9].xml") # change the pattern to match your case
for filename in filenames:
with open(filename, 'r', encoding="utf-8") as content:
tree = ET.parse(content)
lst_jugador = tree.findall('data_panel/players/player')
for jugador in lst_jugador:
print (jugador.find('name').text, jugador.get("id"))
If all your the files in a directory need parsed, you could just use os.listdir()
如果您需要解析目录中的所有文件,则可以使用
os.listdir()
from os import listdir
for file in listdir(<your directory>):
#if you have to be more selective inside your directory
#just add a conditional to skip here
with open(file, "rb"):
tree = ET.parse(data)
lst_jugador = tree.findall('data_panel/players/player')
for jugador in lst_jugador:
print (jugador.find('name').text, jugador.get("id"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.