1. 程式人生 > >Python基礎-----實現文件的增刪改查

Python基礎-----實現文件的增刪改查

== delete imp strip() style one != 遇到 ret

實現文件的增刪改查

 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基礎-----實現文件的增刪改查