当前位置:首页>python>纯干货--Python解析xml并替换key对应的value字段

纯干货--Python解析xml并替换key对应的value字段

  • 2026-09-07 10:46:41
纯干货--Python解析xml并替换key对应的value字段
背景很简单
项目中有一个配置文件
填0表示关闭,填1表示打开
是不是非常的简单?
简单也意味着复杂!
复杂的点在于
每一次都要在繁琐复杂的项目中,翻阅十几个文件夹,越过几十个干扰的xml文件选项,找到要修改的那一个
好复杂好困难啊
改!
必须改!
懒惰是人类进步的第一驱动力!
目前已经有非常多解析xml的库了
并且功能齐全好用
所以我准备使用Python进行这个工具的开发
1、问题描述
项目存在一个xml配置文件
修改字段EnableDebugMessage的值
就可以控制调试弹框的开启和关闭
2、实现思路
打开文件
查找过滤某一行内容
找到之后用写好的内容替换
直接替换当前行的内容更简单一些
替换完以后将内容写入临时文件
用临时文件替换当前文件
3、代码逻辑
打开文件
FILE_DIR = 'D:\\Glodon-shuwei\\GBridge-2\\test\\Bin\\x64Release\\'FILE_NAME = 'hroad_behavior_config.xml'# 打开文件file = open(FILE_DIR + FILE_NAME, "r")lines = file.readlines();
查找过滤某一行内容
找到之后用写好的内容替换
直接替换当前行的内容更简单一些
# 读文件内容并替换对应字段temp_lines = []line_idx = 0have_gcmp_hourse = False # 是否添加调试框选项have_tip = 0 # 是否已经有提示信息for line in lines:    temp_lines.append(line)    if CONFIG_RECORD in line:        if VALUE_TIP in line:            have_tip = 1            temp_lines[line_idx] = line.replace(VALUE_TIP, VALUE_NO_TIP)        elif VALUE_NO_TIP in line:            have_tip = 2            temp_lines[line_idx] = line.replace(VALUE_NO_TIP, VALUE_TIP)    if 'gcmp_InHourse' in line:        have_gcmp_hourse = True    line_idx += 1file.close()
将内容写入临时文件
用临时文件替换当前文件
# 生成临时文件并写入内容with open(FILE_DIR + FILE_NAME_TEMP, 'w') as temp_file:    if have_gcmp_hourse == False:        len_lines = len(temp_lines)        temp_lines_new = temp_lines[: len_lines-1] + [GCMP_INHOURSE_CHARS] + temp_lines[len_lines-1 :]        temp_file.writelines(temp_lines_new)    else:        temp_file.writelines(temp_lines)    if have_tip == 0:        len_lines = len(temp_lines)        temp_lines_new = temp_lines[: len_lines-1] + [CONFIG_RECORD_CHARS] + temp_lines[len_lines-1 :]        temp_file.writelines(temp_lines_new)        print("========>> Open option <<========")    elif have_tip == 1:        print("========>> Close option <<========")    elif have_tip == 2:        print("========>> Open option <<========")temp_file.close()# 用临时文件替换掉老文件os.remove(FILE_DIR + FILE_NAME)os.rename(FILE_DIR + FILE_NAME_TEMP, FILE_DIR + FILE_NAME)print('========>> ChangeDebugState Success!!! <<========')
运行结果展示
上述源码是按照功能模块拆分的
全部源码也已经上传网盘

通过网盘分享的文件:Python解析xml并替换key对应的value字段.rar

链接: https://pan.baidu.com/s/1Tz_snGCJbiCePUHO-MCZCw?pwd=t5ae 提取码: t5ae

尽快转存、下载

最新文章

随机文章