我們在平時的工作或者學習過程中,需要對大量的文件進行處理,如果我們可以學習一門腳本語言,能夠有效的處理文件,那將對我們的工作是一個很大的幫助。在Python的基本操作中,提供了一些關(guān)于文件的操作。
文件對象的操作
- 使用open()或者file()函數(shù)打開文件。
- 使用file.read()讀取文件。
- 使用file.readline()讀取文件的一行相關(guān)信息。
- 使用file.write()進行寫入文件。
- 使用file.writelines(seq)向文件寫入字符串序列seq。
- 使用file.close()關(guān)閉文件。
- 使用file.tell()返回當前在文件中的位置。
- 使用file.seek(off, where=0)在文件中移動指針,從where偏移off字節(jié)。
文件對象的訪問模式
- r 以讀方式打開
- w 以寫方式打開
- a 以追加模式打開
- rU 以讀方式打開,同時提供通用換行符
- r+、w+、a+ 以讀寫模式打開
- rb 以二進制讀模式打開
- wb 以二進制寫模式打開
- ab 以二進制追加模式打開
文件屬性
- file.closed 返回True表示文件已經(jīng)關(guān)閉
- file.encoding 文件所使用的編碼
- file.name 文件名
- file.mode 文件打開時使用的訪問模式
文件系統(tǒng)
對于文件系統(tǒng)的訪問大多通過Python的os模塊實現(xiàn)的,我們要熟練地掌握這一模塊。
讀寫文本數(shù)據(jù)
使用open()函數(shù)配合r模式讀取文本文件的內(nèi)容。
with open('filename.txt','r') as f:
data = f.read()
使用open()函數(shù)配合w模式對文本文件進行寫入。
with open('filename.txt','w') as f:
f.write(text)
使用open()函數(shù)配合a模式對文本文件進行追加。
with open('filename.txt','a') as f:
f.write(text)
注意:open()函數(shù)的默認模式是'r'.在示例中采用了with語句,這會為使用的文件創(chuàng)建一個上下文模式,當程序的控制流程離開with語句塊后,文件自動關(guān)閉。如果是普通的文件操作模式,記得手動關(guān)閉文件。
f = open('filename.txt','r')
data = f.read()
f.close()
讀寫二進制數(shù)據(jù)
使用open()函數(shù)的rb或者wb實現(xiàn)對二進制數(shù)據(jù)的讀或?qū)憽?/p>
with open('filename.bin','rb') as f:
data = f.read()
f.write(b'Hello World')
在讀取或者寫入二進制數(shù)據(jù)時,所有的數(shù)據(jù)是以字節(jié)串的形式操作,而不是文本字符串。
如果要在二進制文件中讀取或者寫入文本內(nèi)容,要確保進行編碼或者解碼操作。
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中對open()函數(shù)的拓展)來代替w模式對一個不存在文件系統(tǒng)的文件操作。
with open('filename.txt','xt') as f:
f.write('Hello\n')
本節(jié)重點在于os模塊的使用。