如何基于XML原文件名自动生成对应CSV名并通过to_csv批量保存?
XML批量转CSV自动生成输出文件名实现方案
核心通过Python内置os模块拆分输入XML文件的路径、文件名、后缀,自动替换后缀为.csv,无需手动逐个指定输出路径。
核心文件名生成逻辑
对于任意输入的XML文件路径,只需3行代码即可生成对应CSV路径:
import os # 输入XML文件的完整路径 xml_path = "file/path/dir/file_a.xml" # 拆分得到无后缀的文件名 file_name, _ = os.path.splitext(os.path.basename(xml_path)) # 拼接得到同目录下的CSV文件路径 csv_path = os.path.join(os.path.dirname(xml_path), f"{file_name}.csv")
完整批量处理代码
整合你原有逻辑后的完整可运行代码如下:
import os import pandas as pd # 你原有XML解析转DataFrame的函数,无需修改 def XML_to_CSV(xml_content): # ... 你原有的XML解析代码 ... return df # 配置存放XML文件的目标文件夹 xml_folder = "file/path/dir" # 遍历文件夹下所有XML文件批量处理 for file in os.listdir(xml_folder): # 过滤仅处理XML格式文件,可根据需求调整后缀判断规则 if file.lower().endswith(".xml"): # 拼接得到XML文件完整路径 xml_full_path = os.path.join(xml_folder, file) # 读取XML文件内容,with语法会自动关闭文件句柄 with open(xml_full_path, "r", encoding="utf-8") as f: xml_content = f.read() # 调用解析函数得到DataFrame df = XML_to_CSV(xml_content) # 自动生成CSV保存路径 file_name_without_suffix = os.path.splitext(file)[0] csv_save_path = os.path.join(xml_folder, f"{file_name_without_suffix}.csv") # 保存CSV文件 df.to_csv(csv_save_path, index=False, encoding="utf-8-sig")
可选优化说明
- 若需要将输出CSV统一存放到独立文件夹,可提前新建目标文件夹,修改
csv_save_path的拼接路径即可 - 若需要遍历子文件夹内的XML文件,将
os.listdir替换为os.walk即可实现递归遍历 - 保存CSV时指定
utf-8-sig编码可兼容Windows系统下用Excel打开不会出现中文乱码
内容的提问来源于stack exchange,提问作者user11666514
相关产品推荐
相关产品推荐

