Python如何修改文件-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)公司專注于小店網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供小店?duì)I銷型網(wǎng)站建設(shè),小店網(wǎng)站制作、小店網(wǎng)頁設(shè)計(jì)、小店網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造小店網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供小店網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

Python如何修改文件?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

Python修改文件的兩種方法

目錄:

一、以占用內(nèi)存的方式修改文件

二、以占用硬盤的方式修改文件

引言

文件修改的方法從操作方式上大致可以分為兩類,一種是以占用電腦內(nèi)存的方式,將文件讀取到內(nèi)存中修改再存回硬盤;第二種方法是分別打開和新建一個(gè)文件,修改文件后寫入到新的文件中,直接保存到硬盤,即占用硬盤的方式。下面我們分別來探討一下兩種方法。

一、以占用內(nèi)存的方式修改文件

待修改的文件 word1.txt,文件內(nèi)容如下:

沉默良久,這個(gè)為某種超出人類理解力的力量代言的女人,冷酷地封死了汪淼的一切出路。

  “三天后,也就是14日,在凌晨1點(diǎn)鐘至5點(diǎn)鐘,整個(gè)宇宙將為你閃爍。”

  他正坐在王府井天主教堂前。在黎明慘白的天空下,教堂的三個(gè)羅馬式尖頂像三根黑色的巨指,似乎在為他指出冥冥太空中的什么
  東西。

  汪淼起身要走,一陣從教堂傳出的圣樂留住了他。今天不是禮拜日,這可能是唱詩班為復(fù)活節(jié)進(jìn)行的排練,唱的是這個(gè)節(jié)日彌撒中
  常唱的《圣靈光照》。在圣樂的莊嚴(yán)深遠(yuǎn)中,汪淼再次感到宇宙變小了,變成了一座空曠的教堂,穹頂隱沒于背景輻射閃爍的紅光
  中,而他則是這宏偉教堂地板磚縫中的一只小螞蟻。他感覺到自己那顆顫抖的心靈被一只無形的巨手撫摸著,一時(shí)間回了脆弱無助
  的孩童時(shí)代,意識(shí)深處硬撐著的某種東西像蠟一樣變軟了,崩潰了,他雙手捂著臉哭了起來。

  “如果有人祈求佛主保佑另一個(gè)主,這是怎么回事呢?”我問,然后詳細(xì)地說了事情的經(jīng)過。

  長(zhǎng)老默默地看著自己手中的書,但顯然沒有讀,而是在想我說的事,然后他說:“你先出去一會(huì)兒,讓我想想?!蔽肄D(zhuǎn)身走出門去
  ,知道這很不尋常:長(zhǎng)老學(xué)識(shí)深厚,一般的關(guān)于宗教、歷史和文化的問題,他都能不假思索地立即回答。我在門外等了有一根煙
  的時(shí)間,長(zhǎng)老叫我回去。

  “我感覺只有一種可能?!彼裆珖?yán)峻地說。

  “什么?會(huì)是什么呢?難道可能有這種宗教,它的主需要其教徒祈求其它宗教的主來拯救?”

  “她的那個(gè)主,是真實(shí)存在的?!?
  我走出長(zhǎng)老的門,穿過寺院朝自己的住處走去,這夜是滿月,我抬頭看看月亮,感覺那是盯著我看的一只銀色的怪眼,月光帶著一
  股陰森的寒氣。

  秦始皇、牛頓、馮.諾伊曼和汪淼站在金字塔頂部的平臺(tái)上,這個(gè)平臺(tái)與汪淼和墨子相遇時(shí)的很相似,架設(shè)著大量的天文觀測(cè)儀器
  ,其中有一部分是歐洲近代的設(shè)備。在他們下方,三千萬秦國(guó)軍隊(duì)宏偉的方陣鋪展在大地上,這是一個(gè)邊長(zhǎng)6公里的正方形。在初
  升的太陽下,方陣凝固了似的紋絲不動(dòng),仿佛一張由三千萬個(gè)兵馬俑構(gòu)成的巨毯,但飛翔的鳥群誤入這巨毯上空時(shí),立刻感到了下
  方濃重的殺氣,鳥群頓時(shí)大亂,驚慌混亂地退飛或繞行。汪淼在心里算了算,如果全人類站成這樣一個(gè)方陣,面積也不過是上海浦
  東大小,比起它表現(xiàn)的力量,這方陣更顯示了文明的脆弱。

  汪淼聽到一種不間斷的類似于雷聲的轟鳴,這聲音是朝歌的大地上許多奇怪的東西發(fā)出的,那是一個(gè)個(gè)巨大的單擺,每個(gè)都有幾十
  米高,單擺的擺錘是一塊塊巨石,被一大束繩索吊在架于兩座細(xì)高石塔間的天橋上,每座單擺都在擺動(dòng)中,驅(qū)動(dòng)它們的是一群群身
  穿盔甲的士兵,每個(gè)巨擺下都有這樣一群士兵,他們合著奇怪的號(hào)子,齊力拉動(dòng)系在巨石擺錘上的繩索,維持著它的擺動(dòng)。汪淼發(fā)
  現(xiàn),所有巨擺的擺動(dòng)都是同步的,遠(yuǎn)遠(yuǎn)看去,這景象怪異得使人著迷,像大地上豎立著一座座走動(dòng)的鐘表,又像自天而降的許多巨
  大的抽象符號(hào)。

  “這是伏曦,”紂王對(duì)剛進(jìn)來的周文王和汪淼介紹那位黑衣人,仿佛他們一直就在那兒似的,而黑衣人才是新來的,“他認(rèn)為,太
  陽是脾氣怪戾的大神,他醒著的時(shí)候喜怒無常,是亂紀(jì)元;睡著時(shí)呼吸均勻,是恒紀(jì)元。伏曦建議建起了外面那些大擺,日夜不停
  地?cái)[動(dòng),聲稱這對(duì)太陽神有強(qiáng)烈的催眠作用,能使其陷入漫長(zhǎng)的沉睡。但直到現(xiàn)在,我們看到太陽神仍醒著,最多只是不時(shí)打打盹
  ?!?
  一個(gè)大人和一個(gè)小孩兒站在死于武斗的紅衛(wèi)兵的墓前,那孩子問大人:他們是烈士嗎?大人說不是;孩子又問:他們是敵人嗎?大
  人說也不是;孩子再問:那他們是什么?大人說:是歷史。

  伊文斯高舉一只拳頭,對(duì)著人群喊道:“消滅人類暴政!”

  和著濤聲和天線在風(fēng)中的轟鳴,三體戰(zhàn)士們齊聲高呼:“世界屬于三體!”這一天,被公認(rèn)為地球三體運(yùn)動(dòng)的誕生日。

我現(xiàn)在要將文中的“汪淼”修改為“WM”,代碼如下:

#!-*-coding:utf-8-*-
old_str = '汪淼'
new_str = 'WM'
f1 = open('word1.txt','r+',encoding="utf-8")  # 以讀寫方式打開,可讀可寫
data = f1.read()  # 讀取文件內(nèi)容
print(f1.tell()) # 4574 tell() 方法返回文件的當(dāng)前位置,即文件指針當(dāng)前位置。
f1.seek(0) # seek() 方法用于移動(dòng)文件讀取指針到指定位置。
for i in data: # 循環(huán)讀取
    if old_str in data:
        data=data.replace(old_str,new_str)  # 用新字符串替換舊字符串
print(data)  # 打印修改后的內(nèi)容
f1.write(data) # 向文件中寫入內(nèi)容(data),默認(rèn)是utf-8
f1.truncate()  # 用于截?cái)辔募?,如果指定了可選參數(shù) size,則表示截?cái)辔募?nbsp;size 個(gè)字符。 如果沒有指定 size,
則從當(dāng)前位置起截?cái)?;截?cái)嘀?nbsp;size 后面的所有字符被刪除。
f1.close()  # 關(guān)閉文件

二、以占用硬盤的方式修改文件

待修改的文件 word2.txt,文件內(nèi)容如下:

一片白云,云被風(fēng)吹到波束范圍外后就消散了,但新的云仍不斷在波束內(nèi)產(chǎn)生,使得那一片圓形的天空像是通向另一個(gè)云霧宇宙的時(shí)空
蝕洞,孩子看到后說它像 一位巨人爺爺?shù)陌最^發(fā)。      
羅輯和莊顏跟著在草地上奔跑的孩子,來到了天線下面。最初的兩個(gè)引力波系統(tǒng)分別建在歐洲和北美,它們的天線采用磁懸浮,只能從
基座上懸起幾厘米;而這個(gè)天線采用反重力,如果愿意,它可以一直升到太空中。
三人站在天線下方 的草地向上望,巨大的圓柱體從他們頭頂向前方伸延,像是從兩側(cè)向上卷曲的天空。
由于半徑很大,底面弧度很小,上面的映像并不失真。
這時(shí)夕陽已經(jīng)照到天線下面,羅輯在映像中看到莊顏的長(zhǎng)發(fā)和白裙在金色的陽光中飄動(dòng),像一個(gè)從天 空俯視地面的天使。
羅輯把孩子舉起來,她的小手摸到了天線光潔的表面,她使勁向一個(gè)方向推著。       
“我能讓它轉(zhuǎn)起來嗎?”       
“如果你推的時(shí)間足夠長(zhǎng),它會(huì)轉(zhuǎn)的?!鼻f顏回答,然后微笑著看著羅輯問,“是嗎?”
    羅輯對(duì)莊顫點(diǎn)點(diǎn)頭:“如果時(shí)間足夠長(zhǎng),她能推動(dòng)地球呢?!?nbsp;     
    像已經(jīng)無數(shù)次發(fā)生過的那樣,他們的目光又交織在一起,這是兩個(gè)世紀(jì)前在蒙娜麗莎的微笑中那次對(duì)視的繼續(xù)。
    他們發(fā)現(xiàn)莊顏設(shè)想的目光語言真的變成了現(xiàn)實(shí),或者說相愛的人類早就擁有了這種語言。
    當(dāng)他們對(duì)視時(shí),豐富的涵義從目光 中涌出,就像引力波束形成的云之井中涌出的白云一般,無休無止。
    但這不是這個(gè)世界的語言,它本身就構(gòu)筑了一個(gè)使自己有意義的世界,只有在那個(gè)玫瑰色的世界中,這種語言的所有詞匯才能找到
    對(duì)應(yīng)物。
    那個(gè)世界中的每一個(gè)人都是上帝, 都能在瞬間數(shù)清沙漠中的每一粒沙并記住它們,都能把星星串成晶瑩的項(xiàng)鏈掛到愛人的頸上...     
    這就是愛嗎?      
    這行字顯現(xiàn)在他們旁邊一個(gè)突然出現(xiàn)的低維展開的智子上,這個(gè)鏡面球體仿佛是上方的圓柱體某處融化后滴下的一滴。
    羅輯認(rèn)識(shí)的三體人并不多,不知道現(xiàn)在與他對(duì)話的是誰,不知道這位外星人是在三體世界還是在日益遠(yuǎn)離太陽系的艦隊(duì)中。
   “應(yīng)該是吧。”羅輯徽笑著點(diǎn)點(diǎn)頭。      
   羅輯博士,我是來向你抗議的。       
   “為什么?”      
   因?yàn)樵谧蛱焱砩系难葜v中,你說人類遲遲未能看清宇宙的黑暗森林狀態(tài),并不是由于文明進(jìn)化不成熟而缺少宇宙意識(shí),而是因?yàn)槿?   類有愛。       
   “這不對(duì)嗎?” 
   對(duì),雖然“愛”這個(gè)詞用在科學(xué)論述中涵義有些模糊,但你后面的一句話就不對(duì)了,你說很可能人類是宇宙中唯一擁有愛的種族,正
   是這個(gè)想法,支撐著你走完了自己面壁者使命中最艱難的一段。       
   “當(dāng)然,這只是一種表達(dá)方式,一種不嚴(yán)格的...比喻而已?!?nbsp;     
   至少我知道三體世界也是有愛的,但因其不利于文明的整體生存而被壓制在 萌芽狀態(tài),但這種萌芽的生命力很頑強(qiáng),會(huì)在某些個(gè)體
   身上成長(zhǎng)起來。       
   “請(qǐng)問您是...”      
   我們以前不認(rèn)識(shí),我是兩個(gè)半世紀(jì)前曾向地球發(fā)出誓告的監(jiān)聽員。       
   “天啊,您還活著?”莊顏驚叫道。      
   也活不了多長(zhǎng)時(shí)間了,我一直處于脫水狀態(tài),但這么長(zhǎng)的歲月,脫水的機(jī)體也會(huì)老化。
   不過我真的看到了自己想著的未來,我感到很幸福。       
   “請(qǐng)接受我們的敬意?!绷_輯說。      
   我只是想和您討論一種可能:也許愛的萌芽在宇宙的其他地方也存在,我們 應(yīng)該到處鼓勵(lì)她的萌發(fā)和成長(zhǎng)。       
   “為此我們可以冒險(xiǎn)?!?nbsp;     
   對(duì),可以冒險(xiǎn)。       
   “我有一個(gè)夢(mèng),也許有一天,燦爛的陽光能照進(jìn)黑暗森林。”      
   這時(shí),這里的太陽卻在落下去,現(xiàn)在只在遠(yuǎn)山上露出頂端的一點(diǎn),像山頂上鑲嵌著的一塊光燦燦的寶石。
   孩子已經(jīng)跑遠(yuǎn),同草地一起沐浴在金色的晚霞之中。     
   太陽快落下去了,你們的孩子居然不害怕?      
   “當(dāng)然不害怕,她知道明天太陽還會(huì)升起來的?!?/pre>

將文中的 “羅輯” 修改為 “LJ”,代碼如下:

import os  # 導(dǎo)入模塊
old_str = '羅輯'
new_str = 'LJ'
modify_times = 0   # 統(tǒng)計(jì)修改次數(shù)
f1 = open('word2.txt','r',encoding='utf-8')    # 以“r”(只讀)模式打開舊文件
f2 = open('word2_1.txt','w',encoding='utf-8')  # 以“w”(寫)模式打開或創(chuàng)建新文件(寫模式下,文件存在則重寫文件,文件
不存在則創(chuàng)建文件)
for lines in f1: # 循環(huán)讀
        if old_str in lines:
                lines = lines.replace(old_str,new_str)  # 新字符串替換舊字符串
                modify_times += 1  # 每修改一次就自增一次
        f2.write(lines) # 將修改后的內(nèi)容后的內(nèi)容寫入新文件
print('文件修改的次數(shù):',modify_times) # 9
f1.close()  # 關(guān)閉文件f1
f2.close()  # 關(guān)閉文件f2(同時(shí)打開多個(gè)文件時(shí),先打開的先關(guān)閉,后打開的后關(guān)閉)
os.replace('word2_1.txt','word2.txt') # 修改(替換)文件名

值得注意的是,用于替換的字符串字節(jié)總數(shù)(UTF-8編碼中,一個(gè)英文字符占1個(gè)字節(jié),一個(gè)中文字符占3個(gè)字節(jié);GBK編碼中,中英文都占兩個(gè)字節(jié))不得超過待替換的字符串,如果超過,就會(huì)覆蓋部分原文件內(nèi)容,這是由硬盤的讀寫機(jī)制決定的,所以,關(guān)于這一點(diǎn)我們?cè)谑褂梦募薷臅r(shí),必須十分小心,及時(shí)備份,防止文件丟失。

關(guān)于Python如何修改文件問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站欄目:Python如何修改文件-創(chuàng)新互聯(lián)
分享地址:http://bm7419.com/article10/dsdpdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、網(wǎng)站改版、網(wǎng)站收錄動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)