1、讀寫文件:
open() 返回一個file object,最常用的有兩個參數:open(filename, mode)。
f = open('workfile', 'w')
第一個參數是包含文件名的字符串。第二個參數是另一個字符串,其中包含一些描述文件使用方式的字符。 mode 可以是 'r' ,表示文件只能讀取,'w' 表示只能寫入(已存在的同名文件會被刪除),還有 'a' 表示打開文件以追加內容;任何寫入的數據會自動添加到文件的末尾。'r+' 表示打開文件進行讀寫。mode參數是可選的;省略時默認為 'r'。
在處理文件對象時,最好使用 with 關鍵字。優點是當子句體結束后文件會正確關閉,即使在某個時刻引發了異常。而且使用 with 相比等效的 try-finally 代碼塊要簡短得多:
with open('E:test/1.txt') as f: read_data = f.read() # We can check that the file has been automatically closed. print(f.closed )
True
注:如果你沒有使用 with 關鍵字,那么你應該調用 f.close() 來關閉文件並立即釋放它使用的所有系統資源。
2、文件對象的方法
要讀取文件內容,請調用 f.read(size),它會讀取一些數據並將其作為字符串(在文本模式下)或字節串對象(在二進制模式下)返回。size 是一個可選的數值參數。當 size 被省略或者為負數時,將讀取並返回 整個文件的內容;如果文件的大小是你的機器內存的兩倍就會出現問題。當取其他值時,將讀取並返回至多 size 個字符(在文本模式下)或 size 個字節(在二進制模式下)。如果已到達文件末尾,f.read() 將返回一個空字符串('')。
f.readline() 從文件中讀取一行;換行符(\n)留在字符串的末尾,如果文件不以換行符結尾,則在文件的最后一行省略。這使得返回值明確無誤;如果f.readline() 返回一個空的字符串,則表示已經到達 了文件末尾,而空行使用 '\n' 表示,該字符串只包含一個換行符。
要從文件中讀取行,你可以循環遍歷文件對象。這是內存高效,快速的,並簡化代碼:
如果你想以列表的形式讀取文件中的所有行,你也可以使用 list(f) 或 f.readlines()。
f.write(string) 會把 string 的內容寫入到文件中,並返回寫入的字符數。:
在寫入其他類型的對象之前,需要先把它們轉化為字符串(在文本模式下)或者字節對象(在二進制模式下)
f.tell() 返回一個整數,給出文件對象在文件中的當前位置,表示為二進制模式下時從文件開始的字節 數,以及文本模式下的意義不明的數字。 要改變文件對象的位置,請使用 f.seek(offset, whence)。通過向一個參考點添加 offset 來計算位置; 參考點由 whence 參數指定。whence 的0值表示從文件開頭起算,1表示使用當前文件位置,2表示使用文件末尾作為參考點。whence 如果省略則默認值為0,即使用文件開頭作為參考點。
在文本文件(那些在模式字符串中沒有 b 的打開的文件)中,只允許相對於文件開頭搜索(使用 seek(0, 2)搜索到文件末尾是個例外)並且唯一有效的offset 值是那些能從f.tell()中返回的或者是零。其他offset 值都會產生未定義的行為。
文件對象有一些額外的方法,例如 isatty() 和 truncate() ,它們使用頻率較低