Python實(shí)現(xiàn)文件的讀寫操作指南
1、文件的操作流程
操作一個(gè)文件需要經(jīng)歷以下幾個(gè)流程:分別是打開文件、讀取或?qū)懭胛募?、關(guān)閉文件。
2、文件的讀取方式
2.1 如何打開一個(gè)文件呢?
打開文件我們使用到了Python中的open方法,其中open方法有以下幾個(gè)參數(shù)
--------------------------------------------------------------------
open(文件路徑,操作類型,encoding="編碼格式")
--------------------------------------------------------------------
1、文件路徑:我們要打開的文件的絕對(duì)路徑
2、操作類型:表示要對(duì)文件進(jìn)行哪些操作,這里我們有讀(r),寫(w),追加(a)三種
a、讀(r):以字母r來表示,功能是只能讀取文件,并不能對(duì)文件進(jìn)行寫入操作。
b、寫(w):以字母w來表示,讀取并向文件中寫入內(nèi)容,但寫入前會(huì)清空原有內(nèi)容。
c、追加(a):以字母a來表示,能夠讀取和寫入,寫入時(shí)不會(huì)清空內(nèi)容,而是追加。
3、編碼格式:我們這里通常使用utf-8來進(jìn)行編碼,Python2則使用的是gbk的格式
#這里打開了一個(gè)名為test.txt的文件,并且讀取的編碼為UTF-8
f = open("E:/python/test.txt","r",encoding="UTF-8")
print(type(f)) #打印類型:<class '_io.TextIOWrapper'>
print(f) #<_io.TextIOWrapper name='E:/python3學(xué)習(xí)庫/study/02-python中級(jí)操作/test.txt' mode='r' encoding='UTF-8'>
#關(guān)閉打開的文件
f.close()【小提示】在文件打開完畢之后要使用close()方法將其關(guān)閉。
2.1.1 with關(guān)鍵字簡化打開文件方式
我們讀取文件也可以通過with關(guān)鍵字進(jìn)行簡化,
#使用with方式讀取文件,as f2是起了別名,相當(dāng)于變量,f2可用于后續(xù)操作
# with open("C:/test.txt","r",encoding="UTF-8") as f2:
# for i in f2:
# print(i)
#有一點(diǎn),使用了with后,我們則不用再寫close方法,with會(huì)在我們讀取完畢文件后自動(dòng)調(diào)用close方法關(guān)閉2.2 read方法讀取文件內(nèi)容
- read方法是基于open打開文件對(duì)象中的一個(gè)讀取文件的方法。
- 其功能為讀取文件中的內(nèi)容,默認(rèn)是讀取所有內(nèi)容。
- 通過read(10)方式可讀取文件中的前10個(gè)字符(包括特殊字符)
2.2.1 read讀取所有內(nèi)容
直接使用文件對(duì)象f.read()的方式,可實(shí)現(xiàn)讀取文件中從頭到尾所有內(nèi)容。
#打開一個(gè)文件
f = open("C:/test.txt","r","utf-8")
#讀取并輸出文件全部內(nèi)容
print(f.read())2.2.2 讀取指定字符數(shù)量
這里通過read(參數(shù))的形式實(shí)現(xiàn)傳參讀取文件中從頭開始的指定數(shù)量的字符,比如我使用了read(15),則表示要讀取文件中前15個(gè)字符(包括特殊字符回車、換行、空格等)
f = open("文件路徑","r","utf-8")
print(f.read(10))
#文件原內(nèi)容:我是test.txt文件,用來讀取和寫入操作
#讀取前10個(gè)字符:我是test.txt文件【小知識(shí)點(diǎn)】這里read方法有一個(gè)特殊的讀取方式,如果我們基于此文件打開對(duì)象調(diào)用了兩次或多次read方法,則第二次讀取會(huì)接著上次讀取到的文件內(nèi)容位置而向下繼續(xù)讀取。
例如:read(10):這個(gè)就表示他讀取了文件中前十個(gè)字符(包括特殊符號(hào)在內(nèi)的),那么我們?cè)趫?zhí)行read時(shí),他就會(huì)從文件中第11個(gè)字符開始向后讀取內(nèi)容,不會(huì)在讀取前面的內(nèi)容。
2.3 readlines()讀取所有內(nèi)容,并將其每行存儲(chǔ)為列表。
- readlines同樣是內(nèi)置的讀取文件的方法,他與read都可以讀取文件所有內(nèi)容。
- 不同的是readlines方法會(huì)將讀取都的每一行內(nèi)容存儲(chǔ)為一個(gè)列表元素,最后返回一個(gè)列表。
#打開文件步驟省略..... print(f.readlines()) #以下是文件原內(nèi)容 #我是test.txt文件,用來讀取和寫入操作 #第二行i和監(jiān)督權(quán)維護(hù)好 #第三行火堆2hu #第四行電弧好 #讀取之后為 ['我是test.txt文件,用來讀取和寫入操作\n', '第二行i和監(jiān)督權(quán)維護(hù)好\n', '第三行火堆2hu\n', '第四行電弧好']
2.4 readline方法讀取單行內(nèi)容
此方法可用于讀取單行的內(nèi)容,因?yàn)橐粋€(gè)readline他就只讀取一行內(nèi)容。
如果還想讀取下一行,可多寫幾個(gè)readline或者使用循環(huán)來完成讀取。
通過以下這個(gè)案例我們可以看到文件有四行內(nèi)容,而我們讀取輸出了首行。
#讀取文件方式省略..... print(f.readline()) #以下是文件原內(nèi)容 #我是test.txt文件,用來讀取和寫入操作 #第二行i和監(jiān)督權(quán)維護(hù)好 #第三行火堆2hu #第四行電弧好 #讀取之后輸出 #我是test.txt文件,用來讀取和寫入操作
3、文件的寫入操作
- 寫入操作主要是使用操作方式中的w和a模式來實(shí)現(xiàn)。
- w表示寫入,a表示追加。
- 這里新增了一個(gè)名為f.flush()的方法,作用是刷新文件內(nèi)容,但現(xiàn)在此功能在close中已支持。
【小知識(shí)點(diǎn)】文件寫入的流程:
- 調(diào)用write時(shí),會(huì)將要寫入的內(nèi)容寫入內(nèi)存的緩沖區(qū)。
- 在執(zhí)行close或者flush后,會(huì)強(qiáng)制將緩沖區(qū)的寫入內(nèi)容寫入到文件中(也就是磁盤中存儲(chǔ))
- 不執(zhí)行以上兩個(gè)方法時(shí),則系統(tǒng)會(huì)在緩沖區(qū)滿后將內(nèi)容寫入文件。
3.1 w寫入模式下的write方法
在此模式下,write方法會(huì)先清空文件中原內(nèi)容,之后再將新的內(nèi)容寫入進(jìn)去,每次都會(huì)清空原內(nèi)容。
with open("C:/test.txt","w",encoding="utf-8") as f:
f.write("hello,我是w模式下寫入的內(nèi)容")
print(f.read())
#以下是文件原內(nèi)容
#我是test.txt文件,用來讀取和寫入操作
#第二行i和監(jiān)督權(quán)維護(hù)好
#寫入后的文件內(nèi)容(原內(nèi)容已被write清空)
#hello,我是w模式下寫入的內(nèi)容3.2 a寫入模式下的write方法
a模式下,write不執(zhí)行清空文件操作,而是會(huì)在內(nèi)容后直接去將內(nèi)容追加寫入(不會(huì)自動(dòng)換行)。
with open("C:/test.txt","a",encoding="utf-8") as f:
f.write("hello,我是a模式下寫入的內(nèi)容")
print(f.read())
#以下是文件原內(nèi)容
#我是test.txt文件,用來讀取和寫入操作
#第二行i和監(jiān)督權(quán)維護(hù)好
#寫入后的文件內(nèi)容(原內(nèi)容還在,新內(nèi)容在最后一行內(nèi)容后追加寫入)
#我是test.txt文件,用來讀取和寫入操作
#第二行i和監(jiān)督權(quán)維護(hù)好hello,我是a模式下寫入的內(nèi)容3.2.1 【小案例】a模式實(shí)現(xiàn)文件的隔行寫入
實(shí)現(xiàn)在寫入時(shí),第1、3、5等奇數(shù)行寫入內(nèi)容,偶數(shù)則執(zhí)行換行操作。
#【案例】a模式的隔行寫入
f2 = open(filedir,"a",encoding="UTF-8")
#a模式會(huì)將內(nèi)容追加到文件內(nèi)容最后一行內(nèi)容的后面,不換行
i = 0
while i<10:
f2.write(f"\n我來試一下?lián)Q行寫入的功能{i}")
i += 1
f2.flush()
f2.close()
3、總結(jié)
- 學(xué)習(xí)了通過open方法打開文件操作,r讀取、w清空寫入、a追加最后三種文件操作模式。
- 通過read(全部)、readline(單行)、readlines(多行列表)方法實(shí)現(xiàn)讀取內(nèi)容操作。
- 通過write方法實(shí)現(xiàn)寫入,flush和close實(shí)現(xiàn)內(nèi)容刷新和關(guān)閉文件操作。
- 最后完成了一個(gè)在a模式下實(shí)現(xiàn)隔行寫入內(nèi)容的案例。
以上就是Python實(shí)現(xiàn)文件的讀寫操作指南的詳細(xì)內(nèi)容,更多關(guān)于Python文件讀寫操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python隨機(jī)函數(shù)random()使用方法小結(jié)
random()是Python中生成隨機(jī)數(shù)的函數(shù),是由random模塊控制,random()函數(shù)不能直接訪問,需要導(dǎo)入random 模塊,然后再通過相應(yīng)的靜態(tài)對(duì)象調(diào)用該方法才能實(shí)現(xiàn)相應(yīng)的功能2018-04-04
如何利用Python開發(fā)一個(gè)簡單的猜數(shù)字游戲
這篇文章主要給大家介紹了關(guān)于如何利用Python開發(fā)一個(gè)簡單的猜數(shù)字游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
用python實(shí)現(xiàn)讀取xlsx表格操作
大家好,本篇文章主要講的是用python實(shí)現(xiàn)讀取xlsx表格操作,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
Python PyQt5實(shí)戰(zhàn)項(xiàng)目之查詢器的實(shí)現(xiàn)流程詳解
PyQt5以一套Python模塊的形式來實(shí)現(xiàn)功能。它包含了超過620個(gè)類,600個(gè)方法和函數(shù)。它是一個(gè)多平臺(tái)的工具套件,它可以運(yùn)行在所有的主流操作系統(tǒng)中,包含Unix,Windows和Mac OS。PyQt5采用雙重許可模式。開發(fā)者可以在GPL和社區(qū)授權(quán)之間選擇2021-11-11
python判斷計(jì)算機(jī)是否有網(wǎng)絡(luò)連接的實(shí)例
今天小編就為大家分享一篇python判斷計(jì)算機(jī)是否有網(wǎng)絡(luò)連接的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12

