說到文件和流,是全部編程語言必學技能了,可見重要程度多有高。想一下咱們身邊有那些案例是程序操做文件?最多見的使用Atom打開一個文件,保存我寫的課件。Python項目中以文件的方式記錄日誌,包括咱們熟悉的操做數據庫,向數據庫裏插入一條數據,其實也是向文件內寫了一行數據,咱們看到視頻,上網瀏覽的網頁,都是對文件或者流的操做,這麼重要的功能,一塊兒好好學習一下吧!數據庫
學完這次課程,咱們能夠對文件進行操做。編程
10-15分鐘編程語言
f = open(name, [,mode [,buffering]])函數
若是文件正常打開,返回文件對象學習
若是文件不存在,報以下錯誤!命令行
若是不指定任何模式,文件默認以只讀方式打開。3d
r:只讀模式(默認)日誌
w:寫模式cdn
a:追加模式視頻
+:讀寫模式
b:二進制模式,例如聲音,視頻,圖像等
小知識點1:在Linux下,換行符是 \n, 而在Windows下換行符是\r\n,在Mac下換行符是 \r,顯然很容易記混,至少我每次換行的時候還要去試,在Python中,替咱們考慮到這點,會自動根據平臺轉換,只須要記住換行使用「\n」換行了。
小知識點2:緩衝,open()函數的第三個參數是是否開啓緩衝,那緩衝的意義的是什麼?你們都知道,內存的速度比硬盤要快不少,若是沒有開啓緩衝,程序寫入文件時,會直接針對硬盤操做。若是開啓了緩衝,程序會把內容先寫到內存,只有使用flush()或者close()函數時,纔會將文件由內存寫入硬盤,這會讓程序的執行速度更快,因此記住打開緩衝。
那麼如何打開緩衝?
buffering = 0或者False 表示不開啓。
buffering = 1,-1,或者小於-1的數字表示開啓緩衝,緩衝區大小爲系統默認值。
buffering > 1 表示自定義緩衝區大小,單位是字節。
寫入文件使用write()方法,直接添加寫入內容就能夠了。
讀取文件內容使用read()函數,可選參數表示讀取字節數。當爲空時表示讀取所有內容。
咱們可使用 seek(offset[,whence])來指定光標的位置,也就是說咱們能夠指定從文件中讀取哪一段字符,或者將光標移動到某個位置,替換他後面的字符。有沒有感受到頗有用?
tell() 函數,像他的名字同樣,告訴咱們光標所在的位置。
上面的Demo會輸出結果7,很簡單咱們將光標seek到5的位置,寫入了兩個字符hi,那麼如今光標的位置就是7。比較好理解吧?
readline() 函數,讀取一行
輸出結果爲:0123456
經過本節課的學習,咱們掌握了很是重要的文件讀寫能力,建議你們認真練習一下。
以前的十二節課都對着命令行,是否是有些乏味?下一節課咱們將學習一下Python的界面庫,是否是很酷?像C++或者C#同樣強大,Python也能夠實現跨平臺的桌面應用程序。