我們?cè)谄綍r(shí)的工作或者學(xué)習(xí)過(guò)程中,需要對(duì)大量的文件進(jìn)行處理芥炭,如果我們可以學(xué)習(xí)一門(mén)腳本語(yǔ)言,能夠有效的處理文件恃慧,那將對(duì)我們的工作是一個(gè)很大的幫助园蝠。在Python的基本操作中,提供了一些關(guān)于文件的操作痢士。
文件對(duì)象的操作
- 使用open()或者file()函數(shù)打開(kāi)文件彪薛。
- 使用file.read()讀取文件。
- 使用file.readline()讀取文件的一行相關(guān)信息怠蹂。
- 使用file.write()進(jìn)行寫(xiě)入文件善延。
- 使用file.writelines(seq)向文件寫(xiě)入字符串序列seq。
- 使用file.close()關(guān)閉文件城侧。
- 使用file.tell()返回當(dāng)前在文件中的位置易遣。
- 使用file.seek(off, where=0)在文件中移動(dòng)指針,從where偏移off字節(jié)嫌佑。
文件對(duì)象的訪問(wèn)模式
- r 以讀方式打開(kāi)
- w 以寫(xiě)方式打開(kāi)
- a 以追加模式打開(kāi)
- rU 以讀方式打開(kāi)豆茫,同時(shí)提供通用換行符
- r+、w+屋摇、a+ 以讀寫(xiě)模式打開(kāi)
- rb 以二進(jìn)制讀模式打開(kāi)
- wb 以二進(jìn)制寫(xiě)模式打開(kāi)
- ab 以二進(jìn)制追加模式打開(kāi)
文件屬性
- file.closed 返回True表示文件已經(jīng)關(guān)閉
- file.encoding 文件所使用的編碼
- file.name 文件名
- file.mode 文件打開(kāi)時(shí)使用的訪問(wèn)模式
文件系統(tǒng)
對(duì)于文件系統(tǒng)的訪問(wèn)大多通過(guò)Python的os模塊實(shí)現(xiàn)的揩魂,我們要熟練地掌握這一模塊。
讀寫(xiě)文本數(shù)據(jù)
使用open()函數(shù)配合r模式讀取文本文件的內(nèi)容炮温。
with open('filename.txt','r') as f:
data = f.read()
使用open()函數(shù)配合w模式對(duì)文本文件進(jìn)行寫(xiě)入火脉。
with open('filename.txt','w') as f:
f.write(text)
使用open()函數(shù)配合a模式對(duì)文本文件進(jìn)行追加。
with open('filename.txt','a') as f:
f.write(text)
注意:open()函數(shù)的默認(rèn)模式是'r'.在示例中采用了with語(yǔ)句柒啤,這會(huì)為使用的文件創(chuàng)建一個(gè)上下文模式忘分,當(dāng)程序的控制流程離開(kāi)with語(yǔ)句塊后,文件自動(dòng)關(guān)閉白修。如果是普通的文件操作模式,記得手動(dòng)關(guān)閉文件重斑。
f = open('filename.txt','r')
data = f.read()
f.close()
讀寫(xiě)二進(jìn)制數(shù)據(jù)
使用open()函數(shù)的rb或者wb實(shí)現(xiàn)對(duì)二進(jìn)制數(shù)據(jù)的讀或?qū)憽?/p>
with open('filename.bin','rb') as f:
data = f.read()
f.write(b'Hello World')
在讀取或者寫(xiě)入二進(jìn)制數(shù)據(jù)時(shí)兵睛,所有的數(shù)據(jù)是以字節(jié)串的形式操作,而不是文本字符串窥浪。
如果要在二進(jìn)制文件中讀取或者寫(xiě)入文本內(nèi)容祖很,要確保進(jìn)行編碼或者解碼操作。
with open('filename.bin','rb') as f:
data = f.read(16)
text = data.decode('utf-8')
with open('filename.bin','rb') as f:
text = 'Hello World'
f.write(text.encode('utf-8'))
不存在的文件的操作
使用x模式(Python3中對(duì)open()函數(shù)的拓展)來(lái)代替w模式對(duì)一個(gè)不存在文件系統(tǒng)的文件操作漾脂。
with open('filename.txt','xt') as f:
f.write('Hello\n')
本節(jié)重點(diǎn)在于os模塊的使用假颇。