說到文件和流,是所有編程語言必學技能了,可見重要程度多有高。想一下我們身邊有那些案例是程序操作文件?最常見的使用Atom打開一個文件,保存我寫的課件。Python項目中以文件的方式記錄日志,包括我們熟悉的操作數據庫,向數據庫里插入一條數據,其實也是向文件內寫了一行數據,我們看到視頻,上網瀏覽的網頁,都是對文件或者流的操作,這么重要的功能,一起好好學習一下吧!
學完此次課程,我能做什么?
學完此次課程,我們可以對文件進行操作。
學習此次課程,需要多久?
10-15分鐘
課程內容
打開一個文件
f = open(name, [,mode [,buffering]])
如果文件正常打開,返回文件對象

如果文件不存在,報如下錯誤!

打開模式
如果不指定任何模式,文件默認以只讀方式打開。
r:只讀模式(默認)
w:寫模式
a:追加模式
+:讀寫模式
b:二進制模式,例如聲音,視頻,圖像等
小知識點1:在Linux下,換行符是 \n, 而在Windows下?lián)Q行符是\r\n,在Mac下?lián)Q行符是 \r,顯然很容易記混,至少我每次換行的時候還要去試,在Python中,替我們考慮到這點,會自動根據平臺轉換,只需要記住換行使用“\n”換行了。
小知識點2:緩沖,open()函數的第三個參數是是否開啟緩沖,那緩沖的意義的是什么?大家都知道,內存的速度比硬盤要快很多,如果沒有開啟緩沖,程序寫入文件時,會直接針對硬盤操作。如果開啟了緩沖,程序會把內容先寫到內存,只有使用flush()或者close()函數時,才會將文件由內存寫入硬盤,這會讓程序的執(zhí)行速度更快,所以記住打開緩沖。
那么如何打開緩沖?
buffering = 0或者False 表示不開啟。
buffering = 1,-1,或者小于-1的數字表示開啟緩沖,緩沖區(qū)大小為系統(tǒng)默認值。
buffering > 1 表示自定義緩沖區(qū)大小,單位是字節(jié)。
寫入文件

寫入文件使用write()方法,直接添加寫入內容就可以了。
讀取文件

讀取文件內容使用read()函數,可選參數表示讀取字節(jié)數。當為空時表示讀取全部內容。
指定讀取文件的位置
我們可以使用 seek(offset[,whence])來指定光標的位置,也就是說我們可以指定從文件中讀取哪一段字符,或者將光標移動到某個位置,替換他后面的字符。有沒有感覺到很有用?

tell() 函數,像他的名字一樣,告訴我們光標所在的位置。

上面的Demo會輸出結果7,很簡單我們將光標seek到5的位置,寫入了兩個字符hi,那么現在光標的位置就是7。比較好理解吧?
readline() 函數,讀取一行

輸出結果為:0123456
小結
通過本節(jié)課的學習,我們掌握了非常重要的文件讀寫能力,建議大家認真練習一下。
接下來學習什么?
之前的十二節(jié)課都對著命令行,是不是有些乏味?下一節(jié)課我們將學習一下Python的界面庫,是不是很酷?像C++或者C#一樣強大,Python也可以實現跨平臺的桌面應用程序。
關注公眾號,回復 Python基礎 下載全部代碼+PDF版電子書
