轉自白月黑羽Python3教程之文件讀寫python
咱們開發程序,常常須要從文本文件中讀入信息,好比從日誌文件中讀取日誌,從而分析數據信息;函數
也常常須要寫入文本信息到文件中,好比寫入操做信息到日誌文件中。編碼
在python語言中,咱們要讀寫文本文件, 首先經過內置函數open 打開一個文件。日誌
open函數會返回一個對象,咱們能夠稱之爲文件對象。code
這個返回的文件對象就包含讀取文本內容和寫入文本內容的方法。對象
前面的課程咱們剛剛學過,要寫入字符串到文件中,須要先將字符串編碼爲字節串。blog
而從文本文件中讀取的文本信息都是字節串,要進行處理以前,必須先將字節串解碼爲字符串。教程
要讀寫文件,首先要經過內置函數open 打開文件,得到文件對象。ip
函數open的參數以下開發
open( file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None )
其中下面這3個參數是咱們經常使用的。
參數 file
file參數指定了要打開文件的路徑。
能夠是相對路徑,好比 ‘log.txt’, 就是指當前工做目錄下面的log.txt 文件 也能夠是絕對路徑,好比 ‘d:\project\log\log.txt’,
參數 mode
mode參數指定了文件打開的 模式
,打開文件的模式 決定了能夠怎樣操做文件。
經常使用的打開模式有
r 只讀文本模式打開,這是最經常使用的一種模式
w 只寫文本模式打開
a 追加文本模式打開
若是咱們要 讀取文本文件內容到字符串對象中 , 就應該使用 r 模式。
咱們能夠發現mode參數的缺省值 就是 ‘r’ 。
就是說,調用open函數時,若是沒有指定參數mode的值,那麼該參數就使用缺省值 ‘r’,表示只讀打開。
若是咱們要 建立一個新文件寫入內容,或者清空某個文本文件從新寫入內容, 就應該使用 ‘w’ 模式。
若是咱們要 從某個文件末尾添加內容, 就應該使用 ‘a’ 模式。
參數 encoding
encoding 參數指定了讀寫文本文件時,使用的 字符編解碼 方式。
調用open函數時,若是傳入了encoding參數值:
後面調用write寫入字符串到文件中,open函數會使用指定encoding編碼爲字節串;
後面調用read從文件中讀取內容,open函數會使用指定encoding解碼爲字符串對象
若是調用的時候沒有傳入encoding參數值,open函數會使用系統缺省字符編碼方式。 好比在中文的Windows系統上,就是使用cp936(就是gbk編碼)。
建議你們編寫代碼 讀寫文本文件時,都指定該參數的值。