#Author:zylong#1.查找 Server下有多少个节点,并打印出来#
#2.在文件我末尾增加一个#
#
#
#name="127.0.0.1" appBase="java" unpackWARs="false" autoDeploy="false"#在上里面#
#查找
deffind_content():
findContent=[]
with open("server","r",encoding="utf-8") as f:for line inf:if "
findContent.append(line)returnfindContent#fi = find_content()#print(len(fi),fi)
#print(''.index("
content ={"name":"127.0.0.1","appBase":"java","unpackWARs":"false","autoDeploy":"false"}#需要将字典的值转为字符串,并且按格式拼接起来
def add_content(**kvavgs):#处理传过来的字典
content = str(kvavgs).replace(":","=").replace("'",'').strip("{").strip("}").replace(",",'')
with open("server.bak", "wb") as w ,\
open("server","r",encoding="utf-8") as f:for line inf:if '' inline:
line= content+"\n" +line
w.write(line.encode("utf-8"))
w.write(kvavgs.__str__().encode("utf-8"))#add_content(name="127.0.0.1",#appBase="java",#unpackWARs="false",#autoDeploy="false")
#{'name': '127.0.0.1', 'appBase': 'java', 'unpackWARs': 'false', 'autoDeploy': 'false'} 改为{name= 127.0.0.1 appBase= java unpackWARs= true autoDeploy= true}
defupdate_content():
with open("server.bak1","w") as w,\
open("server.bak","rb") as f:#不破坏源文件,将修改的内容保存到server.bak1中
#可以直接使用字符串替换(这里练习字典),所以将获取到的内容先转字典,用字典操作
#这里是以字节形式打开的文件
for line inf:
line= line.decode("utf-8")if line.startswith("{'name'") :
kvavgs=eval(line)
kvavgs["unpackWARs"] = "true"kvavgs["autoDeploy"] = "true"
#这里是用kvavgs.__str__() 转字符串方法,与 __str__区分开, __str__是内存地址
line = kvavgs.__str__()
w.write(line)#update_content()
#删除最后一行的字典
defdel_content():
lines=[]
with open("server.bak1","r") as r:#将类容全部读取到缓存中
for line inr:if line.startswith("{'name'"):pass
else:
lines.append(line)
with open("server.bak1", "w") as w:
w.writelines(lines)
del_content()