溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何修改文件

發(fā)布時間:2020-09-24 14:47:47 來源:億速云 閱讀:156 作者:Leah 欄目:編程語言

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

Python修改文件的兩種方法

目錄:

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

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

引言

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

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

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

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

  “三天后,也就是14日,在凌晨1點鐘至5點鐘,整個宇宙將為你閃爍?!?

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

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

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

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

  “我感覺只有一種可能?!彼裆珖谰卣f。

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

  “她的那個主,是真實存在的?!?

  我走出長老的門,穿過寺院朝自己的住處走去,這夜是滿月,我抬頭看看月亮,感覺那是盯著我看的一只銀色的怪眼,月光帶著一
  股陰森的寒氣。

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

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

  “這是伏曦,”紂王對剛進來的周文王和汪淼介紹那位黑衣人,仿佛他們一直就在那兒似的,而黑衣人才是新來的,“他認為,太
  陽是脾氣怪戾的大神,他醒著的時候喜怒無常,是亂紀元;睡著時呼吸均勻,是恒紀元。伏曦建議建起了外面那些大擺,日夜不停
  地擺動,聲稱這對太陽神有強烈的催眠作用,能使其陷入漫長的沉睡。但直到現(xiàn)在,我們看到太陽神仍醒著,最多只是不時打打盹
  ?!?

  一個大人和一個小孩兒站在死于武斗的紅衛(wèi)兵的墓前,那孩子問大人:他們是烈士嗎?大人說不是;孩子又問:他們是敵人嗎?大
  人說也不是;孩子再問:那他們是什么?大人說:是歷史。

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

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

我現(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() 方法返回文件的當前位置,即文件指針當前位置。
f1.seek(0) # seek() 方法用于移動文件讀取指針到指定位置。
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),默認是utf-8
f1.truncate()  # 用于截斷文件,如果指定了可選參數(shù) size,則表示截斷文件為 size 個字符。 如果沒有指定 size,
則從當前位置起截斷;截斷之后 size 后面的所有字符被刪除。
f1.close()  # 關(guān)閉文件

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

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

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

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

import os  # 導入模塊
old_str = '羅輯'
new_str = 'LJ'
modify_times = 0   # 統(tǒng)計修改次數(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(同時打開多個文件時,先打開的先關(guān)閉,后打開的后關(guān)閉)
os.replace('word2_1.txt','word2.txt') # 修改(替換)文件名

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

關(guān)于Python如何修改文件問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI