python學習第十一章——文件和素材

1.打開文件:open函數,它接受一個文件名作爲唯一的強制參數。如果只提供一個參數的話,那麼我們可以獲得能獲取文件內容的文件對象。如果要向文件內寫入內容,則必須提供一個模式參數,open函數中的模式參數只有幾個值,如下圖:


其中b模式表示可以處理二進制文件,比如rb可以用來讀取一個二進制文件。
open函數的第3個參數控制着文件的緩衝,如果參數是0或者是false,IO就是無緩衝的(所有的讀寫操作都直接針對硬盤);如果是1或者是true,IO就是有緩衝的(意味着python使用內存來代替硬盤,讓程序更快,只有使用flush或者close時纔會更新硬盤上的數據)。大於1的數字代表緩衝區的大小(單位是字節),-1或任何負數代表使用默認的緩衝區大小。
2.文件讀和寫:上面的open函數返回的是一個類文件對象,通過這個對象我們就可以寫入(write)和讀取(read)數據了。write(string)方法所提供的參數string會追加到文件中已存在部分的後面。read()方法可以提供讀取字符數的參數。

seek(offset[,whence]):這個方法把當前位置(進行讀和寫的位置)移動到由offset定義的位置,例子如下:


tell()方法返回當前文件的位置,如:


3.readline讀取單獨的一行(從當前的位置開始知道一個換行符出現,也讀取這個換行符)。不適用任何參數(這樣,一行就被讀取和返回)或者使用一個非負的整數作爲readline可以讀取的字符的最大值。readlines方法可以讀取一個文件中的所有行並將其作爲列表返回。writelines和readlines相反:傳給它一個字符串的列表,它會把所有的字符串寫入文件。沒有writeline方法因爲能使用write實現相關功能。
4.關閉文件:close方法,和java中一樣,流的關閉最好是手動進行,所以這裏最好是手動進行文件的關閉(最好在finally語句中確保文件被關閉了)。再python2.5中引入了with語句:with open("somenfile.txt") as somefile:do_something(somefile)。with語句可以打開文件並且將其賦值到變量上(這裏是somefile),之後就可以將數據寫入語句體中的文件。文件在語句結束後會被自動關閉,即使是由於異常引起的結束也是如此。在2.5之前的版本中,with語句只有在導入如下的模塊後纔可以用:from __future__ import with_statement。

5.在當文件比較小的時候可以使用read或readlines一次讀取整個文件,但是當文件較大時,readlines會佔用太多的內存,這個時候可以用while循環和readline方法來替代。這裏還有一種更加方便的方法就是使用fileinput模塊,fileinput模塊包含了打開文件的函數,只需要傳一個文件名給它。如:


6.迭代文件:在python中文件對象時可迭代的,如:


sys.stdin也是可迭代的,就像其他的文件對象,用法如上。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章