python 檔案查詢 修改操作練習

2022-06-09 07:39:11 字數 3934 閱讀 8781

def file_handle(backend_data,res = none,type = '

fetch'):

if type == '

fetch':

ret =

with open(

'haproxy

','r

') as

read_f :

tag =false

for read_line in

read_f:

if read_line.strip() ==backend_data:

tag =true

continue

if tag and read_line.startswith('

backend'):

break

#server讀完,讀到下乙個backend時,關閉for迴圈,否則就會將 backend www.oldboy1.org後面的內容全部讀出來

iftag :

print(

'\033[1;45m%s\033[0m

'%read_line,end = ''

)      #把讀到的哪一行server列印出來

return

ret                                  #函式返回該列表,及返回查詢結果

elif type == '

change':

import os

with open (

'haproxy

','r

') as read_f, open('

haproxy_new

','w

') as

write_f:

tag =false

for read_line in

read_f:

if read_line.strip() ==backend_data:

tag =true

continue

if tag and read_line.startswith('

backend'):

tag =false                    #如果此處不對tag進行關閉,那麼在新檔案中寫完backend www.oldboy1.org內的server就會停止

ifnot tag:

write_f.write(read_line)

else

:

ifnot has_write:

for record in

res:            #把新紀錄寫在新檔案中

write_f.write(record)

has_write =true

os.rename(

'haproxy

','haproxy.bak

')             #此三步操作是使新檔案覆蓋老檔案,先將老檔案換名,再將新檔案換成老檔案原來的名,在刪除老檔案

os.rename(

'haproxy_new

','haproxy')

os.remove(

'haproxy.bak')

def fetch(data):

print(

'\033[1;43m這是查詢功能\033[0m')

print(

'\033[1;43m使用者資料是\033[0m

',data)

backend_data = '

backend %s

' %data

return

file_handle(backend_data)

def add():

pass

def change(data):

print(

'這是修改功能')

print(

'使用者輸入的資料是

',data)

backend = data[0]['

backend

']                     #檔案當中的一條記錄 如 www.oldboy1.org

backend_data = '

backend %s

' %backend

old_server_record = '

%sserver %s weight %s maxconn %s\n

' % ('

'*8,data[0]['

record

']['

server

'],data[0]['

record

']['

weight

'],data[0]['

record

']['

maxconn

']) #因為傳進來的引數是列表(內包含兩個字典),通過此語句將要修改的資料拼接成完整的字串

new_server_record = '

%sserver %s weight %s maxconn %s\n

' % ('

'*8,data[1]['

record

']['

server

'],data[1]['

record

']['

weight

'],data[1]['

record

']['

maxconn'])

print(

'使用者想要修改的記錄是

',old_server_record)

res =fetch(backend)                        #獲取backend 後的server內容

if not res or old_server_record not in

res:  

return

'你要修改的記錄不存在

'else

: index =res.index(old_server_record)

res[index] =new_server_record                #先在列表中完成新老記錄的修改,此處用新記錄代替老記錄

res.insert(

0,'%s\n

file_handle(backend_data,res = res,type = '

change')

def delete():

pass

if __name__ == '

__main__':

msg = '''

1:查詢,

2:新增,

3:修改,

4:刪除,

5:退出,

'''msg_dic =

while

true:

print(msg)

choice = input('

請輸入你的選項:

').strip()

if not choice : continue

if choice == '

5': break

data = input('

請輸入你的資料:

').strip()

if choice != '1'

: data =eval(data)

res =msg_dic[choice](data)

print(

'最終的結果是

',res)

# 修改資訊:[},}]

總結:(1)練習函式的程式設計

(2)檔案的處理

(3)解耦:把查詢功能和修改功能的部分**移動到file_handle() 函式中,這就可以看作是程式的解耦

(4)tag的用法:程式中tag和has_write的用法,使函式在適當的時候停止,注意看在函式中 tag 的用法

python 檔案內容修改替換操作

當我們讀取檔案中內容後,如果想要修改檔案中的某一行或者某乙個位置的內容,在python中是沒有辦法直接實現的,如果想要實現這樣的操作只能先把檔案所有的內容全部讀取出來,然後進行匹配修改後寫入到新的檔案中。例項 如下所示 開啟舊檔案 f open file text.txt r encoding ut...

python檔案操作 檔案指標移動 修改

本文目錄 一 檔案指標移動 二 修改 大前提 檔案內指標的移動是bytes為單位的,唯獨t模式下的read讀取內容個數是以字元為單位 f.read 3 with open a.txt mode rt encoding utf 8 as f data f.read 3 print data with ...

Python之檔案操作例項 批量修改檔案的字首名

匯入包,很重要的 import os 建立資料夾及檔案 os.mkdir test for i in range 1,6 os.mkdir test test str i fp open test test str i txt w encoding utf 8 while true print 功能...