Python基礎知識之文件的修改操做

今天咱們來討論下python下如何實現:打開文件—修改文件——關閉文件的操做

本文采用逐行解釋的方法。python

思路:

第一步:把文件讀取出來
第二部:再用'w'模式寫入到新文件
第三部:把原文件刪除,而且把新文件重命名回原文件
這樣就實現了文件的修改操做函數

咱們先來看看原文件的內容操作系統

with open('xiakexing') as old_file:
    print(old_file.read())
趙客縵胡纓,吳鉤霜雪明。銀鞍照白馬,颯沓如流星。
十步殺一人,千里不留行。事了拂衣去,深藏身與名。
閒過信陵飲,脫劍膝前橫。將炙啖朱亥,持觴勸侯嬴。
三杯吐然諾,五嶽倒爲輕。眼花耳熱後,意氣素霓生。
救趙揮金錘,邯鄲先震驚。千秋二壯士,烜赫大梁城。
縱死俠骨香,不慚世上英。誰能書閣下,白首太玄經。

咱們想要作的修改是把第二行的千里不留行改爲「萬里不流行」
補充說明:用with open()格式能夠同時打開兩個文件,本例中其實是打開文件xiakexing,而且建立文件xiakexing.bak,分別建立對應的文件對象old_file和new_filecode

with open('xiakexing') as old_file,open('xiakexing.bak','w') as new_file:
#採用for循環從文件對象old_file裏迭代地讀取文件,簡單來說就是一行一行地讀取文件,這樣內存中只存儲了一行文件的內容,節省了內存,也防止文件過大時形成的「超載」
    for i in old_file:
        if '千里不留行' in i: #這裏每讀取一行咱們就對其進行條件判斷,判斷該行是不是咱們要找的那一行
            i = i.replace('千','萬')#當找到該行時,把該行的內容替換成咱們想要的內容
#每讀取一行咱們就在新文件中寫入一行,無論該行有沒有變化,總之就是讀一行、寫一行、讀一行、寫一行
        new_file.write(i) 
#當for循環結束後,文件也已經被咱們修改完畢了,這時應該刪除舊文件,重命名新文件,爲了實現這一目的,咱們引入了os模塊,os模塊內主要是一些和操做系統有關的函數
import os            
os.remove('xiakexing') #刪除原文件
os.rename('xiakexing.bak','xiakexing') #把新文件重命名回原文件名,最終實現了文件的修改

而後咱們再來看看文件的內容對象

with open('xiakexing') as old_file:
    print(old_file.read())
趙客縵胡纓,吳鉤霜雪明。銀鞍照白馬,颯沓如流星。
十步殺一人,萬里不留行。事了拂衣去,深藏身與名。
閒過信陵飲,脫劍膝前橫。將炙啖朱亥,持觴勸侯嬴。
三杯吐然諾,五嶽倒爲輕。眼花耳熱後,意氣素霓生。
救趙揮金錘,邯鄲先震驚。千秋二壯士,烜赫大梁城。
縱死俠骨香,不慚世上英。誰能書閣下,白首太玄經。

這樣,咱們就實現了文件的修改。因爲咱們使用的是with open() as 的方法,因此不須要文件關閉的步驟,若是是經過file=open()的方式開打的文件,則必須在末尾加上關閉文件的語句。內存

相關文章
相關標籤/搜索