Python新手求助:如何遍历多个XML文件(附单文件处理代码)
遍历多个XML文件的实现方案
你的核心问题是无法批量处理目录下的XML文件,之前尝试给ET.parse()传多个参数的方式是错误的(该方法仅接受单个文件路径)。下面是修改后的完整代码,实现批量遍历并处理所有XML文件:
关键思路
- 用
glob模块快速获取目录下所有XML文件路径 - 将单个XML文件的处理逻辑封装成函数,便于重复调用
- 遍历所有XML文件,逐个处理并收集结果
修改后的代码
import xml.etree.ElementTree as ET import pandas as pd import glob def process_xml(file_path): # 处理单个XML文件的逻辑 tree = ET.parse(file_path) root = tree.getroot() qty = root.iterfind(".//Qty") pri = root.iterfind(".//PriceAmount") cor = root.iterfind(".//AuctionIdentification") data = [] for x, y, z in zip(qty, pri, cor): a = x.get("v"), y.get("v"), z.get("v") data.append(a) df = pd.DataFrame(data, columns=["Qty", "Price" , "Border"]) df['Qty'] = df['Qty'].astype(float) df['Price'] = df['Price'].astype(float) total = df['Qty'].sum() price = df['Price'].mean() border = df.loc[0,'Border'] # 返回当前文件的统计结果 return pd.DataFrame({ "Qty": [total], "Price": [price], "Border": [str(border)[0:12]] }) # 获取当前目录下所有XML文件 xml_files = glob.glob("*.xml") # 收集所有文件的处理结果 all_results = [] for file in xml_files: print(f"正在处理文件: {file}") result_df = process_xml(file) all_results.append(result_df) # 合并所有结果到一个DataFrame final_df = pd.concat(all_results, ignore_index=True) # 可以打印或保存最终结果 print(final_df) # final_df.to_csv("xml_summary.csv", index=False)
代码说明
process_xml函数:把你原来处理单个XML的逻辑全部封装进去,输入文件路径,输出该文件的统计结果DataFrameglob.glob("*.xml"):获取当前工作目录下所有后缀为.xml的文件,如果你需要指定其他目录,改成glob.glob("/path/to/your/xmls/*.xml")即可- 循环遍历处理:逐个读取XML文件,调用处理函数,把每个文件的结果存入列表,最后用
pd.concat合并成一个总的结果表
内容的提问来源于stack exchange,提问作者AuctionKing
相关产品推荐
相关产品推荐

