0x01 打開一個文件
python中內置了文件對象,通過open()函數就可以制定模式打開指定文件,并創建文件對象。該函數的格式如下:
open(file[,mode='r'[,buffering=-1]])
- file:指定要打開或創建的文件名稱,如果該文件不存在當前目錄,則需要指明路徑
- mode:指定打開文件后的處理模式
- buffering:指定讀寫文件的緩沖模式,數值為0表示不緩存,數值為1表示使用行緩存模式,數值大于1表示緩沖區的大小,默認值為-1。二進制文件和非交互文本文件以固定大小的塊緩沖單位,等價于IO
0x02 對文件內容進行操作
向文本文件寫入內容
如果需要向文本文件中寫入內容,在打開文件時就需要指定文件的打開模式為寫模式。應根據不同的開發需要選取不同的寫入模式
- w:寫入模式,文件可以不存在,如果不存在,則創建文件
我們的程序目錄內容為:
#! /usr/bin/python
#coding:utf-8
s = 'hello python! \n'
f=open('demo.txt','w')
f.write(s)
f.close()
運行結果,多了一個demo.txt,文件內的內容就是我們寫入的
- x:寫入模式,文件必須要存在,不存在拋出異常
此是沒有demo.txt文件,打開模式為x
#! /usr/bin/python
#coding:utf-8
s = 'hello python! \n'
f=open('demo.txt','x')
f.write(s)
f.close()
運行結果如下圖,我們可以看到爆出一個文件不存在的錯誤
- a:追加模式,不覆蓋文件的原始內容
w模式每次寫入都會將文件的原始內容刪除,然后在寫,a模式不會刪除
#! /usr/bin/python
#coding:utf-8
s = 'hello python! \n'
f=open('demo.txt','a')
f.write(s)
f.write(s)
f.close()
運行結果,我們可以看到demo.txt的內容,這里demo.txt存不存在無所謂
讀取文件中的內容
- r:讀模式(默認模式,可以審略),如果文件不存在,則拋出異常
- +:讀寫模式
讀取文件第一行內容:
#! /usr/bin/python
#coding:utf-8f=open('demo.txt','r')
print(f.readline())
f.close()
運行結果
讀取文件所有內容:
#! /usr/bin/python
#coding:utf-8f=open('demo.txt','r')
print(f.read())
f.close()
運行結果
0x03 關閉文件對象
當操作完文件內容以后,一定要關閉文件對象,這樣才能確保所做的修改都保存到文件中。關閉文件對象的語句是:
f.close()
文件操作一般遵循打開—讀寫—關閉的基本流程,但是如果文件讀寫操作代碼發生了異常,就很難保證被正常關閉。可以使用上下文管理關鍵字with來避免產生這個問題。對于with的具體原理,這里參考這邊文章:https://www.cnblogs.com/wongbingming/p/13791972.html
關鍵字with能夠管理資源,總能保證文件正確關閉,并且可以在代碼執行結束后自動還原開始執行代碼塊時的現場,
#! /usr/bin/python
#coding:utf-8with open('demo.txt','a') as f:f.write('233333333 \n')
運行結果,關閉文件都不用我們關閉