文件是一個(gè)存儲(chǔ)在副主存儲(chǔ)器的數(shù)據(jù)序列,可包含任何數(shù)據(jù)內(nèi)容。
概念上,文件是數(shù)據(jù)的集合和抽象,類(lèi)似的,函數(shù)是程序的集合和抽象。
用文件形式組織和表達(dá)數(shù)據(jù)更有效也更加靈活。
文件包括兩種形式,文本文件和二進(jìn)制文件。
文本文件:一般由單一特定的編碼的字符組成
二進(jìn)制文件:一般由0和比特1組成,沒(méi)有統(tǒng)一的字符編碼。
無(wú)論是通過(guò)文本還是二進(jìn)制創(chuàng)建的文件,都可以用兩種方式來(lái)打開(kāi)。
我們來(lái)舉個(gè)例子對(duì)比文本文件和二進(jìn)制文件,
首先我們?cè)谧烂鎰?chuàng)建一個(gè)文本文件,取名example,并寫(xiě)入“我愛(ài)我的祖國(guó)”
如下所示:
注意:右下角的編碼方式為“UTF-8”
然后執(zhí)行代碼:
fp=open("example.txt","rt",encoding='UTF-8') print(fp.readline()) fp.close() fps=open("example.txt","rb") print(fps.readline()) fps.close()
在這段代碼中,分別使用文本文件形式和二進(jìn)制形式打開(kāi)文檔,然后讀取、關(guān)閉。
注:rt為文本文件形式、rb為二進(jìn)制文件形式。
運(yùn)行結(jié)果如下所示:
私信小編01 領(lǐng)取完整項(xiàng)目代碼!
接下來(lái),我們正式學(xué)習(xí)文件相關(guān)操作。
1.文件的打開(kāi)和關(guān)閉
說(shuō)到文件的打開(kāi)關(guān)閉,不由得讓我想起以前的笑話(huà),把大象裝進(jìn)冰箱需要幾步?
文件操作和這個(gè)笑話(huà)一樣,首先打開(kāi)文件、然后進(jìn)行操作、最后關(guān)閉文件。
文件的打開(kāi):
文件默認(rèn)處于存儲(chǔ)狀態(tài),只有將其打開(kāi)當(dāng)前程序才有權(quán)操作這個(gè)文件。
打開(kāi)不存在的文件,程序?qū)?huì)創(chuàng)造一個(gè)新文件來(lái)進(jìn)行操作。
打開(kāi)這個(gè)文件之后,文件處于被占用狀態(tài),另一個(gè)進(jìn)程不得對(duì)文件進(jìn)行操作。
文件打開(kāi)需要使用open()函數(shù),格式如下:
<變量名>=open(<文件名>,<打開(kāi)模式>)
encoding為編碼方式
文件打開(kāi)模式:
“r” :只讀模式,文件不存在返回異常
“w” :覆蓋模式,文件不存在則創(chuàng)建、文件存在則完全覆蓋
“x“ :創(chuàng)建寫(xiě)模式,文件不存在則創(chuàng)建、存在則返回異常
”a” :追加寫(xiě)模式,文件不存在則創(chuàng)建、文件存在則在穩(wěn)健最后追加內(nèi)容
“b” :二進(jìn)制模式
“f” :文本文件模式(默認(rèn)值)
“+” :與 rw\xa一同使用,在原基礎(chǔ)上加入了同時(shí)讀寫(xiě)功能
打開(kāi)模式可以為字符串形式,其中r,w,x,a可以和b,t,+組合使用
如剛剛例子的打開(kāi)方式:rt,rb
encoding為編碼方式
文件的關(guān)閉:
文件使用之后,要采用close()函數(shù)關(guān)閉文件,釋放文件的使用授權(quán)
使用方法如下:
<變量名>.close()
2.文件的讀取
文件打開(kāi)之后,根據(jù)打開(kāi)方式的不同可以對(duì)文件進(jìn)行對(duì)應(yīng)讀寫(xiě)操作。(記得注意編碼方式)
文件的讀取方法如下:
<file>.read(size=-1)
從文件讀入整個(gè)文件內(nèi)容,給出參數(shù)則讀取前size長(zhǎng)度的字符串
<file>.readline(size=-1)
從文件中讀入一行內(nèi)容,如果給出參數(shù)則讀取每行前size長(zhǎng)度的字符串
<file>.readlines(hint=-1)
從文件中讀入整個(gè)文件的內(nèi)容,以每一行為一個(gè)列表,如果給參入,只讀取前hint行
舉個(gè)例子,還是剛剛的example文件,我們多輸入兩行同樣的文件,逐行讀出。
先打開(kāi)文件,然后for循環(huán),通過(guò)readlines()逐行讀取、最后關(guān)閉。
代碼如下:
fp=open("example.txt","rt",encoding='UTF-8') for line in fp.readlines(): print(line) fp.close()
運(yùn)行結(jié)果如下:
3.文件的寫(xiě)入
寫(xiě)入的常見(jiàn)函數(shù)有三個(gè)
<file>.write(s)
向文件寫(xiě)入一個(gè)字符串
<file>.writelines(lines)
講一個(gè)元素全為字符串的列表寫(xiě)入文件
<file>.seek(offset)
改變當(dāng)前文件操作指針的位置,offset的值“0”為文件開(kāi)頭、“1”當(dāng)前位置,“2”文件結(jié)尾
舉個(gè)例子,向文件寫(xiě)入一個(gè)列表類(lèi)型[“中國(guó)”、“美國(guó)”、“法國(guó)”]
代碼如下:
fp=open("example.txt","w+",encoding='UTF-8') lst=["中國(guó)","美國(guó)","法國(guó)"] fp.writelines(lst) fp.close()
結(jié)果如下:
至此便是Python文件方面的常見(jiàn)操作