首頁 >後端開發 >Python教學 >Python下如何實作檔案的修改操作? (附範例)

Python下如何實作檔案的修改操作? (附範例)

不言
不言轉載
2018-10-09 16:41:092454瀏覽

本篇文章帶給大家的內容是關於Python下如何實現文件的修改操作? (附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

今天我們來討論下python下如何實現:開啟檔案—修改檔案-關閉檔案的動作

本文採用逐行解釋的方法。

想法:

第一步:把檔案讀取出來
第二部:再用'w'模式寫入到新檔案
第三部:把原始檔案刪除,並且把新檔案重新命名回原始檔案
這樣就實作了檔案的修改操作

我們先來看看原始檔案的內容

with open('xiakexing') as old_file:
    print(old_file.read())
赵客缦胡缨,吴钩霜雪明。银鞍照白马,飒沓如流星。
十步杀一人,千里不留行。事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。眼花耳热后,意气素霓生。
救赵挥金锤,邯郸先震惊。千秋二壮士,烜赫大梁城。
纵死侠骨香,不惭世上英。谁能书阁下,白首太玄经。

我們想要做的修改是把第二行的千里不留行改成「萬裡不流行」
補充說明:用with open()格式可以同時打開兩個文件,本例中實際上是打開檔案xiakexing,並且建立檔案xiakexing.bak,分別建立對應的檔案物件old_file和new_file

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()的方式開打的文件,則必須在末尾加上關閉文件的語句。

#

以上是Python下如何實作檔案的修改操作? (附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除