前提,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
搞定,收工