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