import os #os包含改名和删除文件函数

def file_handler(backend_data,res = None,type='fetch'):if type == 'fetch':

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

tag= False #找到标志

ret =[]for read_line inread_f:if read_line.strip() == backend_data: #匹配到数据

tag =Truecontinue

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

break

if tag: #找到后读出后面的数据

print('%s' % read_line, end='')

ret.append(read_line)returnretelif type == 'change':

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

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

tag=False

has_write=Falsefor read_line inread_f:if read_line.strip() ==backend_data:

tag=Truecontinue

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

tag=Falseif nottag:

write_f.write(read_line)else:if nothas_write:for record inres:

write_f.write(record)

has_write=True

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

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

os.remove('haproxy.conf.bak')deffetch(data):#print('这是查询功能')

#print('用户数据是',data)

backend_data ='backend %s' %datareturnfile_handler(backend_data)defadd():pass

#[{'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}}]

defchange(data):#print('这是修改功能')

#print('用户输入数据是:',data)

backend = data[0]['backend'] #从用户传参提取www.oldboy1.org

backend_line = 'backend %s' %data[0]['backend']#内容:backend www.oldboy1.org

#拼接字符串old_server_record,把用户传参的源server信息整理出来

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'])#用户传参的目标server信息

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'])print('用户想要修改的记录是:',old_server_record)

res=fetch(backend)print('来自change函数结果--》',res)if not res or old_server_record not inres:return '你要修改的记录不存在'

else:

index=res.index(old_server_record)

res[index]=new_server_record

res.insert(0,'%s\n' %backend_line)

file_handler(backend_line,res=res,type='change')defdelete():pass

#Python文件里面只写不会运行的功能,测试代码在下面写

if __name__ == '__main__':

msg='''1:查询

2:添加

3:修改

4:删除

5:退出'''msg_dic={'1':fetch,'2':add,'3':change,'4':delete,

}whileTrue:print(msg)

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

if choice == '5':breakdata= input('请输入你的数据:').strip()if choice != '1': #查询输入的是字符串,其他需要处理格式化数据

data =eval(data)

res=msg_dic[choice](data)print('最终结果是————》',res)

python增删改查csv文件_【练习】Python第四次:实现对文件的增删改查相关推荐

  1. c++ 写入文件_利用Python把数据存储在csv文件中

    鼠年第一天开盘,很多股票跌停,太闹心了!今天再找点开心的事情做吧.人生最幸福的事情莫过于看到自己写的程序调试通过了! 前面我们介绍了,如何用Python做一个串口通讯的上位机.用这个上位机我们可以从E ...

  2. python对数据进行分类、文件是csv文件_用Python将处理数据得到的csv文件分类(按顺序)保存...

    用Python中的os和numpy库对文件夹及处理数据后得到的文件进行分类保存: import numpy as np import os for m in range(699,0,-35): cur ...

  3. python自动化读取和写入文件_基于Python的接口自动化实战-基础篇之读写配置文件...

    引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值.为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变 ...

  4. python切割txt文件_用Python实现大文本文件切割的方法

    在实际工作中,有些场景下,因为产品既有功能限制,不支持特大文件的直接处理,需要把大文件进行切割处理. 当然可以通过UltraEdit编辑工具,或者从网上下载一些文件切割器之类的.但这些要么手工操作太麻 ...

  5. python下载网页中的pdf文件_【Python】Python的urllib模块、urllib2模块批量进行网页下载文件...

    由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url ...

  6. python中csv库_关于python 自带csv库的使用心得 附带操作实例以及excel下乱码的解决...

    因为上次帮我们产品处理过一个文件,他想生成能excel处理操作的.但是上次由于时间非常紧张,所以并没有处理好. 正好无聊就来好好研究一下 ,找算法要了几个 csv文件.来好好玩一玩. 全篇使用了pyt ...

  7. python2打开文件_关于python:何时以二进制模式打开文件(b)?

    我注意到在文档中他们总是用'wb'打开一个CSV文件. 为什么'b'? 我知道b代表二进制模式,但是你什么时候使用二进制模式(我猜想CSV文件不是二进制模式). 如果相关我是从arcpy.da.Sea ...

  8. linux保存python文件_告诉Python将.txt文件保存到Linux上的某个目录 - python

    我试图将文件保存在QCTestFiles目录中,但是我的脚本未将文件写入指定的目录中.我的路径文件是否适用于Linux,如果不是,我如何更改代码以在另一个目录中写入和保存文件?我当前的脚本在brper ...

  9. python数据库操作批量sql执行_利用Python如何批量修改数据库执行Sql文件

    利用Python如何批量修改数据库执行Sql文件 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用Python如何批量修改数据库执行Sql文件.txt ] (友 ...

  10. python模块下载1002python模块下载_【Python】Python的urllib模、urllib2模块的网络下载文件...

    因为需要从一些下载一个页PDF文件.但是需要下载PDF有数百个文件,这是不可能用人工点击下载.只是Python有相关模块,所以写一个程序PDF文件下载,顺便熟悉Python的urllib模块和ulrl ...

最新文章

  1. Codeforces Beta Round #95 (Div. 2) 部分解题报告 (dp,组合数,)
  2. 设计模式之创建型模式
  3. 【成长之路】【python】python基础5-模块
  4. php动态修改配置文件
  5. 04号团队-团队任务3:每日立会(2018-11-27)
  6. 65.shell特殊符号与和cut,sort,wc,uniq,tee,tr,split命令
  7. Latex应用和资源
  8. Delete Edges
  9. html盒子全部蓝色,彻底弄懂CSS盒子模式之五
  10. iPhone 6s不死!支持升级iOS 14,还能再战两年
  11. list 操作 java_Java,List操作技巧
  12. 库表操作 - 存储引擎
  13. 理解线程/多线程处理数组(MultiThreaded dealing with arrays)
  14. 后台json返回给ajax,Ajax 如何 得到后台返回 的json数据,正确的格式应该如何去写?...
  15. android真机调试
  16. 扩大人类对车辆的控制 新种双轨制自驾车出现
  17. 致远SPM之CAP数据分析解决方案
  18. flask-uploads文件上传
  19. asp.net 各种小窍门
  20. 学习率和数据集规模_数据集和数据

热门文章

  1. 数字图像处理基础与应用 第五章
  2. derby mysql 同步_[Derby]数据库操作说明
  3. bootstrap外不引用连接_网络编程Netty IoT百万长连接优化,万字长文精讲
  4. 腾讯移动分析+html5,FAQ · 腾讯移动分析 文档
  5. Win11系统设置绿色护眼模式的方法
  6. 新萝卜家园windows11 64位官网正版系统v2021.07
  7. mysql 定期备份策略,MySQL--3--mysqldump备份策略
  8. Java包装类中的equals方法
  9. spring boot配置dubbo(XML)
  10. MySQL + MyBatis 批量插入时存在则忽略或更新记录