码迷,mamicode.com
首页 > 编程语言 > 详细

Python基础-----实现文件的增删改查

时间:2018-10-04 10:12:26      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:操作   with   根据   eva   write   turn   def   其他   数据   

实现文件的增删改查

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 import os
 4 def file_handler(backend_data,res = None,type = fetch):   #文件处理函数
 5     if type == fetch:   #查询操作
 6         with open(haproxy.conf,r) as read_f:
 7             tag = False           #初始状态标识
 8             ret = []              #用于放置查询结果
 9             for read_line in read_f:
10                 if read_line.strip() == backend_data:  #用strip()去除读取的末尾回车、空格
11                     tag = True
12                     continue  #查询到需要查询的数据则继续执行下次循环
13                 if tag and read_line.startswith(backend):break #防止跳到下一条记录(以backend开头的)
14                 if tag:
15                     print(read_line,end = ‘‘)
16                     ret.append(read_line)
17             else:
18                 print(未查询到你所要找的记录!)
19         return ret
20     elif type == change:
21         with open(haproxy.conf,r) as read_f,22             open(haproxy.conf_new,w) as write_f: #因为文件没有修改一说,所以相当于创建副本
23             tag = False  #状态标识
24             has_write = False  #用于标记已经写入的内容
25             for read_line in read_f:
26                 if read_line.strip() == backend_data:
27                     tag = True
28                     write_f.write(%s\n%backend_data)   #写入需要修改的backend标题
29                     continue
30                 if tag and read_line.startswith(backend): #防止跳到下一条记录(以backend开头的)
31                     tag = False  #遇到其他backend记录,不会出现修改
32                 if not tag:   #尚未读取到需要修改的部分,则直接读写
33                     write_f.write(read_line)
34                 else:
35                     if not has_write:
36                         for record in res:
37                             write_f.write(record)
38                         has_write = True   #将修改的内容全部写好,则改变已经写入的状态
39         os.rename(haproxy.conf,haproxy.conf.bak)  #将原文件备份为备份文件
40         os.rename(haproxy.conf_new,haproxy.conf)  #覆盖原文件
41 def fetch(data): #查询
42     print(查询的数据为:%s%data)
43     backend_data = backend %s %data         #拼接出关键词
44     return file_handler(backend_data)
45 
46 
47 def add(data): #添加
48     pass
49 def change(data): #修改
50     backend = data[0][backend]  #文件中的一条记录www.oldboy1.org,需要修改,先执行查找,如果没有,则不能修改
51     backend_data = backend %s%backend   #backend www.oldboy1.org
52     old_server_record = %sserver %s weight %s maxconn %s\n%(
53                                                              *8,data[0][record][server],
54                                                             data[0][record][weight],
55                                                             data[0][record][maxconn],
56                                                             )
57     new_server_record = %sserver %s weight %s maxconn %s\n%(
58                                                          *8,data[1][record][server],
59                                                         data[1][record][weight],
60                                                         data[1][record][maxconn],
61                                                         )
62     print(用户想要修改的记录是:,old_server_record)
63     res = fetch(backend)   #返回指定backend记录的列表
64     if not res or old_server_record not in res:  #没找到(1 backend没找到 2 server没找到)
65         return 你要修改的记录不存在!
66     else:
67         index = res.index(old_server_record)
68         res[index] = new_server_record   #获取到修改的值列表
69     return file_handler(backend_data,res = res , type = change)
70 def delete(): #删除
71     pass
72 
73 
74 if __name__ == __main__:   #执行可执行的语句
75     msg = ‘‘‘
76         1:查询
77         2:添加
78         3:修改
79         4:删除
80         5:退出
81     ‘‘‘
82     msg_dic = {
83         1 : fetch,
84         2 : add,
85         3 : change,
86         4 : delete
87     }
88     while True:
89         print(msg)
90         choice = input(请输入你的选项:).strip()
91         if not choice : continue   #用户输入为空时
92         if choice == 5:break     #输入5则退出程序
93 
94         if choice != 1:
95             data = eval(input(输入数据:).strip())   #有用户输入,并过滤掉前后空格及回车;在修改增加等操作传入的是字典格式
96             fetch_res = msg_dic[choice](data)        #根据选项字典获取函数名,加()则运行相关选项函数
97         else:
98             data = input(输入数据:).strip()  #有用户输入,并过滤掉前后空格及回车;在修改增加等操作传入的是字典格式
99             fetch_res = msg_dic[choice](data)        #根据选项字典获取函数名,加()则运行相关选项函数

 

Python基础-----实现文件的增删改查

标签:操作   with   根据   eva   write   turn   def   其他   数据   

原文地址:https://www.cnblogs.com/Meanwey/p/9741296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!