要求:

源文件目录描述:software文件夹下面有4个文件夹,分别为:1、2、3、4,

1里面有3个文件夹,分别为1、2、3,每个文件夹下面分别有xml文件

2里面有4个文件夹,分别为1、2、3、4,每个文件夹下面分别有xml文件

3里面有2个文件夹,分别为1、2,每个文件夹下面分别有xml文件

4里面有1个文件夹,为1,文件夹下面分别有xml文件

要求保存的json文件的文件目录与源文件目录一致

请给出对应的python代码。

为了满足需求,编写一个Python脚本来递归地遍历software文件夹及其所有子文件夹,查找XML文件,并将它们转换为JSON文件,同时保持相同的目录结构。


import os
import xml.etree.ElementTree as ET
import json
# 指定包含XML文件的根目录
root_directory = 'path_to_software_directory'
# 指定保存JSON文件的根目录
json_root_directory = 'path_to_save_json_files'
# 确保JSON保存根目录存在
if not os.path.exists(json_root_directory):
    os.makedirs(json_root_directory)
# 将XML数据转换为字典
def xml_to_dict(element):
    child_data = {}
    for child in element:
        child_data[child.tag] = xml_to_dict(child)
    text = element.text
    if text:
        text = text.strip()
    if child_data or text:
        return child_data if child_data else text
    return None
# 递归遍历目录并转换XML文件
def convert_xml_to_json (dir_path, json_dir_path):
    for filename in os.listdir(dir_path):
        file_path = os.path.join(dir_path, filename)
        # 如果是文件夹,则递归调用
        if os.path.isdir(file_path):
            json_sub_dir_path = os.path.join(json_dir_path, filename)
            if not os.path.exists(json_sub_dir_path):
                os.makedirs(json_sub_dir_path)
            convert_xml_to_json(file_path, json_sub_dir_path)
        # 如果是XML文件,则进行转换
        elif filename.endswith('.xml'):
            # 解析XML文件
            tree = ET.parse(file_path)
            root = tree.getroot()
            # 转换根元素
            data_dict = xml_to_dict(root)
            # 创建JSON文件名
            json_file_path = os.path.join(json_dir_path, f"{os.path.splitext(filename)[0]}.json")
            # 将字典转换为JSON格式的字符串
            json_data = json.dumps(data_dict, indent=4)
            # 将JSON字符串写入文件
            with open(json_file_path, 'w') as json_file:
                json_file.write(json_data)
# 开始转换
convert_xml_to_json(root_directory, json_root_directory)
print(f"所有XML文件已转换为JSON文件,并保存在:{json_root_directory}")

请确保将path_to_software_directory替换为software文件夹的实际路径,将path_to_save_json_files替换为保存JSON文件的根目录的实际路径。

该脚本会递归地遍历software目录及其所有子目录,查找XML文件,并将每个XML文件转换为JSON文件。转换后的JSON文件将保存在与源XML文件相同的位置,相对于新的根目录json_root_directory。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐