修改线上配置文件
修改线上配置文件
本例子是已txt为例,手动输入需要修改的原配置文件字段和修改后的新字段;
格式:已>>作为分隔符输入 例:原配置文件字段:config:True 想修改为config:Fase 输入格式:config:True>>config:Fase
本例子可以循环输入需要修改的值
实现思路:同时打开两个文件,一个原文件读,一个新文件写,遇到输入的修改值时更新且写入新文件中;
最后将新文件命名为旧文件名,将旧文件名修改为其它:
import os,random
class ReadLineTest:
def open_finame(self):
while True:
self.old_str,self.new_str=self.input_str()
flag = False
with open('old.txt','r+',encoding='utf-8') as old_read,open('new.txt','w+',encoding='utf-8') as new_add:
for line in old_read:
if line.strip()=='':continue
elif self.old_str in line:
flag = True
line = line.replace(self.old_str,self.new_str)
new_add.write(line)
if flag:
print("\033[42;1m将旧文件中{0}修改为:{1}成功\033[0m".format(self.old_str,self.new_str))
else:
print("\033[31;1m修改字段在旧文件中不存在,请重新输入\033[0m")
continue
want_to = input("是否继续:Y/N:").strip().upper()
if want_to=="Y":
self.revamp_old_filename()
else:
break
def input_str(self):
while True:
print("\033[35;1m修改格式>>【前面是需要修改字段后面是修改后的字段】例如:Somehow:config>>新值Somehow:C://dirname\033[0m")
input_all_text = input("请输入需要更新值已修改值和新值已>>分隔:")
try:
old_text,new_text = input_all_text.split(">>")
return old_text,new_text
except Exception as error:
print("\033[31;1m输入格式不正确,请重新输入\033[0m")
def revamp_old_filename(self):
inpu_exit = input("是否将新文件名重命名为线上旧文件名?:>>>>>>Y/N:").strip().upper()
if inpu_exit=="Y":
name = ''.join(random.sample(['a','b','c','d','e','f','g','h','A','C','E','x'],3))
os.rename("old.txt","old{0}.txt".format(name))
os.rename("new.txt","old.txt")
print("\033[42;1m内容和文件名均修改成功\033[0m")
else:
print("\033[31;1m放弃修改\033[0m")
exit()
if __name__ == '__main__':
obj = ReadLineTest()
obj.open_finame()
obj.revamp_old_filename()