1.需求
项目部署过程中,支持平板的应用在进行安卓apk打包前,需要修改一些配置文件,以适应不同的项目环境。
2.需求分析
逐行读取配置文件,匹配到对应行时,正则匹配需要修改的位置,进行替换。然后将每行读取的文件(包含替换的那一行)写到新的同名文件里。
3.实例
替换’cordove-hcp.json’文件的ip/端口及组织名 192.168.10.12:8888/xddq
替换为 192.168.1.17:8888/pebg
{
"name": "workorder",
"ios_identifier": "",
"android_identifier": "",
"update": "resume",
"content_url": "http://172.17.1.17:8888/pebg/workorder_mgm/statics/chcp"
}
python代码为:
def modify_cordova_hcp_json_file(local_app_directory, access_address, org_code, app_module):
"""
android-apk编译步骤2:修改cordova-hcp.json文件
local_app_directory: 项目路径 如 '/root/workspace/workorder_mgm/'
access_address: 访问地址 如'192.168.20.1:8888'
org_code: 组织名,如'pebg'
app_module: 项目名,如 'workorder_mgm'
"""
print(
'************modify_cordova_hcp_json_file start, access_address=%s, app_module=%s, org_code=%s************' % (
access_address, app_module, org_code))
# 拼接出该文件所在路径
config_file_path = local_app_directory + 'web/src-cordova/cordova-hcp.json'
try:
if os.path.exists(config_file_path):
replace_path = access_address + '/' + org_code
file_data = ""
with open(config_file_path, "r", encoding="utf-8") as f:
for line in f:
if "content_url" in line:
ret = re.findall(r'\"content_url\": \"https?://(.*?/.*?)/', line)
if ret:
match_addr = ret[0]
line = line.replace(match_addr, replace_path)
print('************modify_cordova_hcp_json_file, old_addr=%s, new_addr=%s' % (match_addr, replace_path))
file_data += line # 保存每一行读取到的数据(包含替换以后的那一行)
# 最后写入同名文件进行替换
with open(config_file_path, "w", encoding="utf-8") as f:
f.write(file_data)
except Exception as e:
print('modify_cordova_hcp_json_file error, app_module=%s, e=%s' % (app_module, e))