python 自行解析xml并替换key对应的value字段

前提,python已经有了解析XML的库,并且非常好用,如果需要可以自行百度使用。

本文章单纯练习一下,好久没用过python了。

问题描述:

存在一个xml配置文件,修改这里的值,可以开启和关闭调试弹框

代码实现:

# -*- coding: utf-8 -*-
import os

# 变量定义
FILE_DIR = 'D:\\Glodon-shuwei\\GBridge-2\\test\\Bin\\x64Release\\'
FILE_NAME = 'hroad_behavior_config.xml'
FILE_NAME_TEMP = 'hroad_behavior_config_python_temp.xml'
CONFIG_RECORD = 'EnableDebugMessage' # 弹框的key
CONFIG_RECORD_CHARS = '\t<ConfigRecord type="int" name="EnableRecord" value="-8360517" />\n'
VALUE_TIP = '-8360517' # 弹框字段值
VALUE_NO_TIP = '0' # 不弹框字段值
GCMP_INHOURSE_CHARS = '\t<ConfigRecord type="string" name="ProductType" value="gcmp_InHourse" />\n'

# 打开文件
file = open(FILE_DIR + FILE_NAME, "r")
lines = file.readlines();

# 读文件内容并替换对应字段
temp_lines = []
line_idx = 0
have_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 += 1
file.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!!! <<========')

最后再写一个bat脚本调用

@echo off
call ChangeDebugState.py

pause

搞定,收工

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值