前言
读取txt文件,重写里面某个key值,然后覆盖写入文件。
如果覆盖写入失败,则回滚值未修改前的代码,避免错误写入下次运行报错
这段代码,其实就是模仿SpringBoot实现Mysql的事务管理通过@Transactional注解的方式 ,如果程序报错就自动回滚未插入前的数据。防止后台报错的时候sql被插入了。
#!/usr/bin/env python
# -*- coding=utf-8 -*-
__author__ = 'Benjamin'
__CreateAt__ = '2021/11/15-15:15'
import json
def writeRpcInfoConfig(RpcKey,RpcValue):
fileName = "../config/RpcInfoConfig.txt"
# fileName = "RpcInfoConfig.txt"
f = open(fileName, 'r',encoding="utf-8")
f_data = f.read()
f.close()
f_dict = json.loads(f_data)
f_dict_copy = f_dict.copy()
RpcKeyValue = f_dict.get(RpcKey,None)
if RpcKeyValue:
# 修改,字段新增值
# 字典合并
RpcKeyValue.update(RpcValue)
else:
# 新增Key,并添加值
f_dict[RpcKey] = RpcValue
try:
f = open(fileName, 'w')
f.write(json.dumps(f_dict))
f.close()
print("新增成功")
except:
f = open(fileName, 'w')
f.write(json.dumps(f_dict_copy))
f.close()
print("新增失败,回滚未修改前")
if __name__ == "__main__":
print(writeRpcInfoConfig("test3.rpc",{"testKey":"testValue"}))