Python 修改檔案

2022-08-25 16:48:30 字數 1825 閱讀 9201

一、有時候我們會遇到在寫入檔案後,其實內容並未被寫到檔案裡面的問題

#

原因是內容先寫到緩衝區,緩衝區滿時,才寫入磁碟

#解決:用f.flush()強制把緩衝區裡面的資料寫到磁碟上

fw = open('

username.txt

',w)

fw.write('測試

')fw.flush()

二、修改檔案簡單直接的方法(replace()),此方法當檔案內容較多時,效率不高,會出現記憶體溢位的情況

1、開啟乙個檔案,獲取到檔案的內容read方法(返回型別是str)

2、對內容進行修改

3、清空原來的內容truncate方法

4、把新的內容寫到檔案

f= open('

username.txt

','a+')

f.seek(0)

#a+模式檔案指標預設在檔案末尾,用seek(0)將檔案指標放到開頭

all_str =f.read()#返回型別是str,當檔案內容較多時,效率不高

new_str = all_str.replace('

123456

','789012

')#替換檔案內容

f.seek(0)

f.truncate()#

清空檔案內容

f.write(new_str)#

將修改後的檔案內容寫入檔案

f.close()#

關閉檔案

修改檔案內容中舉例:給檔案中的使用者名稱前統一加值test_

f = open('

username.txt

','a+')

f.seek(0)

all_str = ''#每次迴圈的時候把字串拼接起來,然後最後寫入檔案

for line in f:#

f.readlines()把檔案裡面所有的東西一次都讀出來放到list裡面,檔案大的話效率不高

new_line = 'test

_' +line

all_str +=new_line

f.seek(0)

f.truncate()

#清空檔案內容

f.write(all_str)

f.close()

三、以上修改檔案方法當檔案小時用起來是比較方便的,但檔案大時效率不高,以下介紹一種效率比較高的方法

1、

開啟兩個檔案

2、a檔案,一行一行修改

3、寫一行寫到b檔案

4、a.txt a.txt.bak

5、刪除a檔案,b檔案的名字改為a檔名

#f.write()只能寫字串

#f.writelines()迴圈寫入,會幫助咱們迴圈list寫入

import

oswith open(

'words

',encoding='

utf-8

') as fr,open('

.words.bak

','w

',encoding='

utf-8

') as fw:

for line in

fr: new_line = line.replace('

測試','

test')

fw.write(new_line)

os.remove(

'words

')#刪除檔案

os.rename('

.words.bak

','words

')#改名

python檔案修改

檔案轉至 1 def alter file,old str,new str 2 3 替換檔案中的字串 4 param file 檔名 5 param old str 就字串 6 param new str 新字串 7 return 8 9 file data 10 with open file,r ...

python修改檔案 fileinput

上網查了好多方法都是將檔案一行一行都進來,然後新開乙個檔案指標,將檔案再一行行寫進新檔案裡。感覺不是太好,看到這個fileinput的庫,發現大同小異,不過有一點就是可以在原檔案上修改,不用新開檔案。舉個簡單的例子 我有json檔案1.json是如下格式 1 2 我想把檔案裡面的 換成乙個,可以通過...

python之檔案修改

with open a.txt mode r t encoding utf 8 as f print f.writable f.seek 7,0 f.write sb with open a.txt mode r t encoding utf 8 as f f.seek 3,0 f.write h ...