Python中常見的文件操作合集(讀取、編碼和關(guān)閉)
文件的編碼
一些文本文件是通過編碼技術(shù)將內(nèi)容翻譯成0和1存入
編碼技術(shù):翻譯的規(guī)則,記錄了如何將內(nèi)容翻譯成二進制,以及如何將二進制翻譯回可識別的內(nèi)容
計算機中有很多編碼類型:比如UTF-8,GBK,Big5
UTF-8是目前最常用的編碼
文件的讀取
文件操作:打開、關(guān)閉、讀取
open()打開函數(shù):打開一個存在的文件,或者創(chuàng)建一個新文件
open(name,mode,encoding)
name:是要打開的目標(biāo)文件名的字符串(可以包含文件所在的具體路徑)
mode:設(shè)置打開文件的模式(訪問模式):只讀、寫入、追加
encoding:編碼格式(推薦使用UTF-8)
f=open('python.txt','r',encoding='UTF-8')
#encoding的順序不是第三位,所以不能用位置參數(shù),用關(guān)鍵字參數(shù)直接指定
注意:這個f就是文件對象
f=open("F:/Desktop/test.txt","r",encoding="utf-8")
print(type(f))

mode常用的三種基礎(chǔ)訪問模式
| 模式 | 描述 |
|---|---|
| r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認(rèn)模式 |
| w | 打開一個文件只用于寫入。如果該文件已存在則打開文件,并從頭開始編輯,原有的內(nèi)容會被刪除。若文件不存在,創(chuàng)建新文件 |
| a | 打開一個文件用于追加。如文件存在,新內(nèi)容會寫入到已有內(nèi)容以后。如果該文件不存在,創(chuàng)建新文件進行寫入。 |
讀操作的方法
read()方法:文件對象.read(num)
num表示要從文件中讀取的數(shù)據(jù)長度(單位是字節(jié)),如果沒有傳入num,那么就表示讀取文件中的所有數(shù)據(jù)
f=open("F:/Desktop/test.txt","r",encoding="utf-8")
print(type(f))
print(f.read(11))
print(f.read())
同時使用兩個read時,會從上面讀取后的結(jié)果繼續(xù)讀,不是從頭

readlines()方法
readlines可以按照行的方式把整個文件中的內(nèi)容進行一次性讀取,并且返回的是一個列表,其中每一行的數(shù)據(jù)為一個元素
f=open("F:/Desktop/test.txt","r",encoding="utf-8")
print(type(f))
#print(f.read(11))
#print(f.read())
print(f.readlines())

readline方法
一次讀取一行內(nèi)容
f=open("F:/Desktop/test.txt","r",encoding="utf-8")
print(type(f))
#print(f.read(11))
#print(f.read())
#print(f.readlines())
line1 = f.readline()
line2 = f.readline()
print(line1)
print(line2)

文件關(guān)閉
在操作文件時,打開的文件會占用系統(tǒng)資源,因此使用完畢后必須及時關(guān)閉,否則可能導(dǎo)致資源泄露,甚至出現(xiàn)文件被鎖定無法進行其他操作(如刪除、修改)的情況。
關(guān)閉文件可以通過文件對象的 close() 方法實現(xiàn):
# 打開文件
f = open("F:/Desktop/test.txt", "r", encoding="utf-8")
# 執(zhí)行讀取操作
content = f.read()
print(content)
# 關(guān)閉文件
f.close()
注意:如果忘記調(diào)用 close() 方法,文件可能會保持打開狀態(tài),尤其在程序運行時間較長或頻繁操作文件時,可能引發(fā)系統(tǒng)資源耗盡的問題。
寫操作(mode=‘w’)
當(dāng)需要向文件中寫入內(nèi)容時,可以使用 w 模式(寫入模式)打開文件。w 模式的特點如下:
- 若文件已存在,原有內(nèi)容會被完全清空,新內(nèi)容從文件開頭開始寫入;
- 若文件不存在,則自動創(chuàng)建一個新文件。
寫入內(nèi)容主要通過 write() 方法實現(xiàn),該方法接收字符串作為參數(shù),將內(nèi)容寫入文件:
# 以寫入模式打開文件
with open("F:/Desktop/test.txt", "w", encoding="utf-8") as f:
# 寫入單行內(nèi)容
f.write("這是通過 write 方法寫入的第一行內(nèi)容\n")
# 寫入多行內(nèi)容(需手動添加換行符 \n)
f.write("第二行內(nèi)容\n")
f.write("第三行內(nèi)容")
運行上述代碼后,test.txt 文件中的內(nèi)容會被更新為:
這是通過 write 方法寫入的第一行內(nèi)容
第二行內(nèi)容
第三行內(nèi)容
提示:write() 方法不會自動添加換行符,若需要換行,需手動在字符串末尾添加 \n。
追加操作(mode=‘a’)
如果希望在已有文件的末尾添加新內(nèi)容,而不覆蓋原有內(nèi)容,可以使用 a 模式(追加模式)。a 模式的特點如下:
- 若文件已存在,新內(nèi)容會被添加到文件末尾;
- 若文件不存在,則自動創(chuàng)建新文件并寫入內(nèi)容。
追加內(nèi)容同樣使用 write() 方法:
# 以追加模式打開文件
with open("F:/Desktop/test.txt", "a", encoding="utf-8") as f:
f.write("\n這是追加的第一行內(nèi)容") # 從文件末尾開始寫入
f.write("\n這是追加的第二行內(nèi)容")
假設(shè)之前 test.txt 已有內(nèi)容:
這是通過 write 方法寫入的第一行內(nèi)容
第二行內(nèi)容
第三行內(nèi)容
執(zhí)行追加操作后,文件內(nèi)容會變?yōu)椋?/p>
這是通過 write 方法寫入的第一行內(nèi)容
第二行內(nèi)容
第三行內(nèi)容
這是追加的第一行內(nèi)容
這是追加的第二行內(nèi)容
之前 test.txt 已有內(nèi)容:
這是通過 write 方法寫入的第一行內(nèi)容
第二行內(nèi)容
第三行內(nèi)容
執(zhí)行追加操作后,文件內(nèi)容會變?yōu)椋?/p>
這是通過 write 方法寫入的第一行內(nèi)容
第二行內(nèi)容
第三行內(nèi)容
這是追加的第一行內(nèi)容
這是追加的第二行內(nèi)容
注意:a 模式下,文件指針默認(rèn)位于文件末尾,因此寫入的內(nèi)容會直接追加到最后,不會影響原有內(nèi)容。
到此這篇關(guān)于Python中常見的文件操作合集(讀取、編碼和關(guān)閉)的文章就介紹到這了,更多相關(guān)Python文件操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Python3.8運行tornado項目報NotImplementedError錯誤
這篇文章主要介紹了Python3.8運行tornado項目報NotImplementedError錯誤,本文給大家分享解決方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
詳解用python自制微信機器人,定時發(fā)送天氣預(yù)報
這篇文章主要介紹了用python自制微信機器人,定時發(fā)送天氣預(yù)報,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
vscode 與pycharm 配置 autopep8自動格式化代碼
autopep8是一個可以將Python代碼自動排版為PEP8風(fēng)格第三方包,使用它可以輕松地排版出格式優(yōu)美整齊的代碼,這里就為大家分享一下具體的方法2023-09-09
python繪制BA無標(biāo)度網(wǎng)絡(luò)示例代碼
今天小編就為大家分享一篇python繪制BA無標(biāo)度網(wǎng)絡(luò)示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11

