python 文件修改记录_python基础-文件增删改查

对指定文件haproxy.conf的backend www.oldboy1.org进行增删改查。文件内容如下

global

log 127.0.0.1 local2

daemon

maxconn 256

log 127.0.0.1 local2 info

defaults

log global

mode http

timeout connect 5000ms

timeout client 50000ms

timeout server 50000ms

option dontlognull

listen stats :8888

stats enable

stats uri /admin

stats auth admin:1234

frontend oldboy.org

bind 0.0.0.0:80

option httplog

option httpclose

option forwardfor

log global

acl www hdr_reg(host) -i www.oldboy.org

use_backend www.oldboy.org if www

backend www.oldboy1.org

server 101.1000.7.9 101.1000.7.9 weight 20 maxconn 30

server 2.2.2.7 2.2.2.7 weight 30 maxconn 4000

server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000

server 2.2.2.4 2.2.2.4 weight 30 maxconn 4000

backend www.oldboy2.org

server 3.3.3.3 3.3.3.3 weight 20 maxconn 3000

backend www.oldboy20.org

server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333

用户输入的修改信息为

#[{'backend':'www.oldboy1.org','record':{'server':'2.2.2.4','weight':20,'maxconn':3000}},{'backend':'www.oldboy1.org','record':{'server':'2.2.2.5','weight':30,'maxconn':4000}}]

元素【0】为修改前,元素【1】为修改后

importosdeffetch(data):print('这是查询功能')print('用户查询的数据是%s'%data)

backend_data='backend %s'%data

with open('haproxy.conf','r',encoding='utf-8') as f1:

tag=False

ret=[]for read_line inf1:if backend_data==read_line.strip():#行末有换行符\n

tag =Truecontinue#跳入下一行

if tag and read_line.strip().startswith('backend'):#遇到下一个backend

break

iftag:

ret.append(read_line)print(read_line)returnretdefadd(data):print('添加')defchange(data):print('这是修改功能')

backend=data[0]['backend']#用户输入数据的0个元素是字典,key是backend

backend_data = 'backend %s' % backend #backend www.oldboy1.org

old_server_record = '%sserver %s %s weight %s maxconn %s\n' % (' ' * 8, data[0]['record']['server'],

data[0]['record']['server'],

data[0]['record']['weight'],

data[0]['record']['maxconn'])

new_server_record= '%sserver %s %s weight %s maxconn %s\n' % (' ' * 8, data[1]['record']['server'],

data[1]['record']['server'],

data[1]['record']['weight'],

data[1]['record']['maxconn'])

res=fetch(backend)print(res)if notres:return '你要修改的记录不存在'

if old_server_record not inres:return '你要修改的记录不存在'

else:

index=res.index(old_server_record) #通过value获取index

res[index]=new_server_record#修改的是fetch返回的res,还需要重新写入文件

res.insert(0,'%s\n'%backend_data) #fetch返回的res没有backend www.oldboy1.org头部

with open('haproxy.conf','r') as read_f,\

open('haproxy.conf_new','w') as write_f:

tag=False

has_write=False#是否改写

for read_line inread_f:if read_line.strip()==backend_data :#backend www.oldboy1.org

tag=Truecontinue #跳到下一行

if tag and read_line.startswith('backend'):

tag=Falseif not tag:#不是#backend www.oldboy1.org

write_f.write(read_line) #按照读的来写

iftag:if nothas_write:for recond in res:#把修改后的fetch返回的res写入新文件

write_f.write(recond)#把res写入

has_write=True#改写完了

os.rename('haproxy.conf','haproxy.conf.bak')

os.rename('haproxy.conf_new','haproxy.conf')defdelete(data):pass

if __name__=="__main__":

msg='''1:查询

2:添加

3:修改

4:删除

5:退出'''

print(msg)

msg_dict={'1':fetch,'2':add,'3':change,'4':delete,

}whileTrue:

choice=input('请输入你的选项:').strip()if not choice:continue

if choice=='5':breakdata=input('请输入你的数据:')if choice !=1:

data=eval(data)if int(choice)<6:

res=msg_dict[choice](data)print(res)else:print('请输入正确的选项')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值