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()方法,可以實現更多操作