我正在尝试解析存储在同一文件夹中的多个 XML 文件。xml 文件具有相同的格式。我想要做的是解析 xml 文件并将它们复制到另一个文件夹中,以便以后处理它们。XML 文件如下所示:<Racing type="Race"> <Meeting sport="HH" meetingCode="349083" track="Lol" country="GB"> <Race result="true" Available="true" raceNumber="13" id="13" revision="1" state="Final Result"> <Result status="Final Result"> <Position name="Foo" btnDistance="XX"/> <Position name="Ok" btnDistance="1"/> <Position name="Done" btnDistance="2"/> </Result> </Race> </Meeting></Racing>到目前为止,我写的是下面的代码,它只读取一个 XML 文件并向我显示 RACE 元素及其属性。import osimport xml.etree.ElementTree as etbase_path = os.path.dirname(os.path.realpath(__file__))xml_file = os.path.join(base_path, "data\\c89b150a-7389-4f2f-a98b-9a241b12616c.xml")tree = et.parse(xml_file)root = tree.getroot()for child in root: for element in child: print(element.tag, ":", element.attrib)我现在想要做的是读取存储在同一路径中的多个 XML 文件,并找到那些带有meetingCode="349083" 的文件,以便它们将它们复制到不同的路径中,例如 C:\users\test。能否请你帮忙 ?之后,我的第二个需要是结合搜索,例如搜索并复制包含meetingCode="349083"和revision="1"的 xml 文件提前致谢 !
1 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
只需循环遍历文件夹中的所有 xml 文件,如下所示
import os
import xml.etree.ElementTree as ET
def process(data):
xml_obj = ET.fromstring(data)
for race in xml_obj:
for k,v in race.items():
if k == 'meetingCode' and v == '349083':
return True
return False
path = '<xml_dir>'
xml_files = os.listdir(path)
for xml_file in files:
xml_file_path = os.path.join(path, xml_file)
fp = open(xml_file_path)
data = myfile.read()
if process(data):
#copy the file
添加回答
举报
0/150
提交
取消