Python中的檔案讀寫

小杰哥001發表於2019-01-19

Python內建了一個open()方法,用於對檔案進行讀寫操作。使用open()方法操作檔案可以分三步走,一是開啟檔案,二是操作檔案,三是關閉檔案。

open()方法的返回值是一個file物件,可以將它賦值給一個變數。其基本語法格式為:

f = open(filename,mode)

PS:Python中,所有具有read和write方法的物件,都可以歸納為file型別。而所有的file型別物件都可以使用open方法開啟,close方法結束和被with上下文管理器管理。這是Python的設計哲學之一。

filename:一個包含了你要訪問的檔名稱的字串值,通常是一個檔案路徑。

mode:開啟檔案的模式,有很多種,預設是隻讀方式r。

一個簡單的例子:

開啟一個檔案

f = open("/tmp/foo.txt","w")

f.write("Python very nice")

關閉開啟的檔案

f.close()

####開啟模式:

r 只讀 預設模式,如果檔案不存在就報錯,存在就正常讀取。

w 只寫 若檔案不存在,新建檔案然後寫入;如果存在,先清空內容再寫入

a 追加 若檔案不存在,新建檔案,然後寫入;如果存在,在檔案最後追加寫入。

x 新建 如果檔案存在則報錯,否則就新建檔案,然後寫入內容

b 二進位制模式

  • 讀寫模式

一 b模式:

二進位制模式,通常用來讀取圖片視訊等二進位制檔案。注意,它在讀寫的時候是以bytes型別讀寫的,因此獲得的是一個bytes物件而不是字串。在這個讀寫過程中,需要自己指定編碼格式。在使用帶b的模式時一定要注意傳入的資料型別,確保為bytes型別。

s = ‘this is test’

b = bytes(s,encoding=“utf—8”)

f = open(‘test.txt’,'w')

f.write(s)

這樣沒問題

s = 'this is test2'

b = bytes(s,encoding=“utf—8”)

f = open(‘test2.txt’,'wb') # 注意多個b

f.write(s)

這樣會報錯 因為它需要一個bytes型別資料,你卻給了個字串

二 + 模式:

對於w+模式,在讀寫之前都會清空檔案的內容,建議不要使用

對於a+模式,永遠只能在檔案的末尾寫入,有侷限性,建議不要使用

對於r+模式,也就是讀寫模式,配合seek()和tell()方法,可以實現更多操作

相關文章