摘要:今天我們來討論下下如何實現(xiàn)打開文件修改文件關(guān)閉文件的操作本文采用逐行解釋的方法。這樣,我們就實現(xiàn)了文件的修改。
今天我們來討論下python下如何實現(xiàn):打開文件—修改文件——關(guān)閉文件的操作
本文采用逐行解釋的方法。
思路:第一步:把文件讀取出來
第二部:再用"w"模式寫入到新文件
第三部:把原文件刪除,并且把新文件重命名回原文件
這樣就實現(xiàn)了文件的修改操作
我們先來看看原文件的內(nèi)容
with open("xiakexing") as old_file: print(old_file.read())
趙客縵胡纓,吳鉤霜雪明。銀鞍照白馬,颯沓如流星。 十步殺一人,千里不留行。事了拂衣去,深藏身與名。 閑過信陵飲,脫劍膝前橫。將炙啖朱亥,持觴勸侯嬴。 三杯吐然諾,五岳倒為輕。眼花耳熱后,意氣素霓生。 救趙揮金錘,邯鄲先震驚。千秋二壯士,烜赫大梁城。 縱死俠骨香,不慚世上英。誰能書閣下,白首太玄經(jīng)。
我們想要做的修改是把第二行的千里不留行改成“萬里不流行”
補充說明:用with open()格式可以同時打開兩個文件,本例中實際上是打開文件xiakexing,并且創(chuàng)建文件xiakexing.bak,分別創(chuàng)建對應(yīng)的文件對象old_file和new_file
with open("xiakexing") as old_file,open("xiakexing.bak","w") as new_file: #采用for循環(huán)從文件對象old_file里迭代地讀取文件,簡單來講就是一行一行地讀取文件,這樣內(nèi)存中只存儲了一行文件的內(nèi)容,節(jié)省了內(nèi)存,也防止文件過大時造成的“超載” for i in old_file: if "千里不留行" in i: #這里每讀取一行我們就對其進(jìn)行條件判斷,判斷該行是否是我們要找的那一行 i = i.replace("千","萬")#當(dāng)找到該行時,把該行的內(nèi)容替換成我們想要的內(nèi)容 #每讀取一行我們就在新文件中寫入一行,不管該行有沒有變化,總之就是讀一行、寫一行、讀一行、寫一行 new_file.write(i) #當(dāng)for循環(huán)結(jié)束后,文件也已經(jīng)被我們修改完畢了,這時應(yīng)該刪除舊文件,重命名新文件,為了實現(xiàn)這一目的,我們引入了os模塊,os模塊內(nèi)主要是一些和操作系統(tǒng)有關(guān)的函數(shù) import os os.remove("xiakexing") #刪除原文件 os.rename("xiakexing.bak","xiakexing") #把新文件重命名回原文件名,最終實現(xiàn)了文件的修改
然后我們再來看看文件的內(nèi)容
with open("xiakexing") as old_file: print(old_file.read())
趙客縵胡纓,吳鉤霜雪明。銀鞍照白馬,颯沓如流星。 十步殺一人,萬里不留行。事了拂衣去,深藏身與名。 閑過信陵飲,脫劍膝前橫。將炙啖朱亥,持觴勸侯嬴。 三杯吐然諾,五岳倒為輕。眼花耳熱后,意氣素霓生。 救趙揮金錘,邯鄲先震驚。千秋二壯士,烜赫大梁城。 縱死俠骨香,不慚世上英。誰能書閣下,白首太玄經(jīng)。
這樣,我們就實現(xiàn)了文件的修改。由于我們使用的是with open() as 的方法,所以不需要文件關(guān)閉的步驟,如果是通過file=open()的方式開打的文件,則必須在末尾加上關(guān)閉文件的語句。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/42552.html
摘要:默認(rèn)為或者說,是以格式保存對象如果設(shè)置為或者,則以壓縮的二進(jìn)制格式保存對象。但是,要小心坑試圖增加一個坑就在這里當(dāng)試圖修改一個已有鍵的值時沒有報錯,但是并沒有修改成功。要填平這個坑,需要這樣做多一個參數(shù)沒有坑了還用循環(huán)一下 pickle pickle是標(biāo)準(zhǔn)庫中的一個模塊,在Python 2中還有一個cpickle,兩者的區(qū)別就是后者更快。所以,下面操作中,不管是用import pick...
摘要:目錄操作文件與文件夾操作文件與文件夾案例批量修改文件名案例批量修改文件名模塊是標(biāo)準(zhǔn)庫中的一個用于訪問操作系統(tǒng)功能的模塊。 目錄 OS操作文件與文件夾 案例—批量修改文件名 OS模塊是Python標(biāo)準(zhǔn)庫中的一個用于訪問操作系統(tǒng)功能的模塊。使用OS模塊中提供的接口,可以實現(xiàn)跨平臺訪...
目錄Numpy簡介Numpy操作集合1、不同維度數(shù)據(jù)的表示1.1 一維數(shù)據(jù)的表示1.2 二維數(shù)據(jù)的表示1.3 三維數(shù)據(jù)的表示2、 為什么要使用Numpy2.1、Numpy的ndarray具有廣播功能2.2 Numpy數(shù)組的性能比Python原生數(shù)據(jù)類型高3 ndarray的屬性和基本操作3.1 ndarray的基本屬性3.2 ndarray元素類型3.3 創(chuàng)建ndarray的方式3.4 ndarr...
摘要:元組運算符可與使用加號來連接兩個元組輸出為也可以使用乘號輸出為當(dāng)然也可以用成員運算符通用地可以使用刪除元組元組相關(guān)內(nèi)置函數(shù)計算元組元素個數(shù)。返回元組中元素最大值返回元組中元素最小值。可迭代對象將可迭代對象轉(zhuǎn)換為元組。 元組是什么? 你可以把它看作是只讀的列表,因為元組不可改變,但是要注意,如果元組中含有列表元素,則該列表元素是可變的,通俗地講就是兒子不可變,但是孫子可變 由于元組不可...
摘要:首發(fā)于我的博客線程池進(jìn)程池網(wǎng)絡(luò)編程之同步異步阻塞非阻塞后端掘金本文為作者原創(chuàng),轉(zhuǎn)載請先與作者聯(lián)系。在了解的數(shù)據(jù)結(jié)構(gòu)時,容器可迭代對象迭代器使用進(jìn)行并發(fā)編程篇二掘金我們今天繼續(xù)深入學(xué)習(xí)。 Python 算法實戰(zhàn)系列之棧 - 后端 - 掘金原文出處: 安生??? 棧(stack)又稱之為堆棧是一個特殊的有序表,其插入和刪除操作都在棧頂進(jìn)行操作,并且按照先進(jìn)后出,后進(jìn)先出的規(guī)則進(jìn)行運作。 如...
閱讀 3186·2019-08-30 15:55
閱讀 2952·2019-08-30 13:46
閱讀 1454·2019-08-29 17:29
閱讀 3522·2019-08-29 11:08
閱讀 3445·2019-08-29 11:04
閱讀 1093·2019-08-28 18:20
閱讀 552·2019-08-26 13:37
閱讀 1334·2019-08-26 11:49