Python文件打開(kāi)讀取寫(xiě)入方法實(shí)用案例
前言
讀寫(xiě)文件是最常見(jiàn)的IO操作。Python內(nèi)置了讀寫(xiě)文件的函數(shù),用法和C是兼容的。
讀寫(xiě)文件前,我們先必須了解一下,在磁盤(pán)上讀寫(xiě)文件的功能都是由操作系統(tǒng)提供的,現(xiàn)代操作系統(tǒng)不允許普通的程序直接操作磁盤(pán),所以,讀寫(xiě)文件就是請(qǐng)求操作系統(tǒng)打開(kāi)一個(gè)文件對(duì)象(通常稱(chēng)為文件描述符),然后,通過(guò)操作系統(tǒng)提供的接口從這個(gè)文件對(duì)象中讀取數(shù)據(jù)(讀文件),或者把數(shù)據(jù)寫(xiě)入這個(gè)文件對(duì)象(寫(xiě)文件)。
python中對(duì)文件的操作方法經(jīng)常使用open和with open。下面分別介紹
open()方法
正常情況下,想要打開(kāi)一個(gè)文件并且保證該文件會(huì)被關(guān)閉。使用open()方法,最后一定要保證關(guān)閉文件對(duì)象,即調(diào)用close()方法。原因是當(dāng)我們寫(xiě)文件時(shí),操作系統(tǒng)往往不會(huì)立刻把數(shù)據(jù)寫(xiě)入磁盤(pán),而是放到內(nèi)存緩存起來(lái),空閑的時(shí)候再慢慢寫(xiě)入。只有調(diào)用close()方法時(shí),操作系統(tǒng)才保證把沒(méi)有寫(xiě)入的數(shù)據(jù)全部寫(xiě)入磁盤(pán)同時(shí)釋放資源。忘記調(diào)用close()的后果是數(shù)據(jù)可能只寫(xiě)了一部分到磁盤(pán),剩下的丟失了。語(yǔ)法格式如下
文件對(duì)象f = open(文件名,文件對(duì)象訪問(wèn)模式)
其中的文件對(duì)象訪問(wèn)模式如下
1. "w",打開(kāi)一個(gè)新的文件并寫(xiě)入內(nèi)容
這里對(duì)象訪問(wèn)模式使用"w",打開(kāi)文件時(shí),文件存在則清空內(nèi)容,不存在則創(chuàng)建新的
f = open('1.txt','w') f.write('今天一直在下雨\n') f.write('把我整抑郁了\n') f.write('o(╥﹏╥)o\n') f.close()
2. "r",打開(kāi)文件并讀取內(nèi)容
f = open("1.txt",'r') print(f.read()) #讀取全部?jī)?nèi)容 f.close() f = open("1.txt",'r') print(f.readline()) #一個(gè)f.readline()只讀第一行 f.close() f = open("1.txt",'r') #全部讀,但是用列表的方式展示 print(f.readlines()) f.close()
3. "a",以追加內(nèi)容的模式打開(kāi)
上面使用"w"的時(shí)候文件存在則會(huì)清除內(nèi)容,如果我們想要打開(kāi)一個(gè)已經(jīng)存在內(nèi)容的文件并追加內(nèi)容則可以使用"a"。如下打開(kāi)存在的"1.txt"文件,并追加一行內(nèi)容
f = open('1.txt','a') f.write("帥哥出來(lái)玩嗎") f.close()
4. 創(chuàng)建一個(gè)空的文件
open("12.txt",'w').close()
with open()方法
open()使用后需要調(diào)用f.close()方法,但是每次都這么寫(xiě)實(shí)在太繁瑣,所以,Python引入了with語(yǔ)句來(lái)自動(dòng)幫我們調(diào)用close()方法。推薦使用with open()
with用于創(chuàng)建一個(gè)臨時(shí)的運(yùn)行環(huán)境,運(yùn)行環(huán)境中的代碼執(zhí)行完后自動(dòng)安全退出環(huán)境。
1. 打開(kāi)并讀取文件,每次讀取一行內(nèi)容
方法一:
with open('1.txt','r') as file: for line in file: #依次遍歷 #print(line) #默認(rèn)輸出的內(nèi)容會(huì)多一個(gè)換行 print(line[:-1])
將網(wǎng)頁(yè)的數(shù)據(jù)進(jìn)行保存時(shí)有時(shí)需要指定編碼類(lèi)型,比如為utf-8。不確定可以查看網(wǎng)頁(yè)源碼的編碼類(lèi)型,這里保存和網(wǎng)頁(yè)編碼類(lèi)型一樣就行
with open('./2.html','w',encoding='utf-8') as f:
方法二:
直接使用循環(huán)也可以
for line in open("1.txt",'r'): print(line[:-1])
2. 打開(kāi)并寫(xiě)入文件
with open('2.txt','a') as file: file.write("hello\n") file.write("are you ok?\n")
實(shí)用案例
需求:
打開(kāi)文件1.txt,1.txt的內(nèi)容為一行行的ip地址。每次從里面讀取一行數(shù)據(jù)加上"http://",然后將其保存到另外一個(gè)新的文件中
for ip in open("1.txt",'r'): url = "http://" + ip with open("url.txt",'a',,encoding="utf-8") as f: #這里必須以追加的模式打開(kāi),不然每次新增內(nèi)容前都會(huì)清空 f.write(url) print('ok')
總結(jié)
到此這篇關(guān)于Python文件打開(kāi)讀取寫(xiě)入方法的文章就介紹到這了,更多相關(guān)Python文件打開(kāi)讀取寫(xiě)入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基礎(chǔ)之文件操作及光標(biāo)移動(dòng)詳解
這篇文章主要為大家介紹了Python基礎(chǔ)之文件操作及光標(biāo)移動(dòng)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Python實(shí)現(xiàn)同時(shí)調(diào)用多個(gè)GPT的API
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)同時(shí)調(diào)用多個(gè)GPT的API,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09pycharm中創(chuàng)建sql文件及模板的過(guò)程
很多小伙伴剛開(kāi)始使用pycharm時(shí)發(fā)現(xiàn)以前的老員工在使用pycharm創(chuàng)建sql文件時(shí)會(huì)自帶文件頭模板,例如時(shí)間、作者、版本、郵件等信息,這是怎么做到的呢,一起來(lái)看一下吧2022-07-07為什么選擇python編程語(yǔ)言入門(mén)黑客攻防 給你幾個(gè)理由!
為什么選擇python編程語(yǔ)言入門(mén)黑客攻防,小編今天給你幾個(gè)理由!Python語(yǔ)言的優(yōu)點(diǎn)、Python黑客攻擊優(yōu)點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02python如何實(shí)現(xiàn)數(shù)組反轉(zhuǎn)
這篇文章主要介紹了python如何實(shí)現(xiàn)數(shù)組反轉(zhuǎn)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02python實(shí)現(xiàn)讀取類(lèi)別頻數(shù)數(shù)據(jù)畫(huà)水平條形圖案例
這篇文章主要介紹了python實(shí)現(xiàn)讀取類(lèi)別頻數(shù)數(shù)據(jù)畫(huà)水平條形圖案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe
今天在使用conda創(chuàng)建環(huán)境之后,使用pycham發(fā)現(xiàn)找到自己的python環(huán)境但是找不到環(huán)境對(duì)應(yīng)的python.exe,這篇文章主要給大家介紹了關(guān)于如何解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe的相關(guān)資料,需要的朋友可以參考下2023-10-10詳解如何利用Python實(shí)現(xiàn)報(bào)表自動(dòng)化
這篇文章主要介紹了報(bào)表自動(dòng)化的流程,并教你用Python實(shí)現(xiàn)工作中的一個(gè)報(bào)表自動(dòng)化實(shí)戰(zhàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03