目錄
文件讀寫
讀取文件
IOError異常處理
UnicodeDecodeError異常處理
寫文件
文件操作方法
在磁盤上讀寫文件的功能都是由操作系統提供的,現代操作系統不允許普通的程序直接操作磁盤,所以,讀寫文件就是請求操作系統打開一個文件對象(通常稱為文件描述符),然後,通過操作系統提供的接口從這個文件對象中讀取數據(讀文件),或者把數據寫入這個文件對象(寫文件)。
使用Python內置的open()
函數,傳入文件名和標示符,標識符'r'表示讀。
f=open('F:\eclipse\eclipse\sy9T3.txt','r')
文件不存在則會拋出FileNotFoundError。
成功打開文件後,調用read()方法一次性讀完文件的全部內容。
f.read();
最後調用close()方法關閉文件文件使用完畢後必須關閉,因為文件對象會占用操作系統的資源,並且操作系統同一時間能打開的文件數量也是有限的。
f.close()
為了避免文件內容過多,反復調用read(size)
方法,每次最多讀取size個字節的內容。
其中readline()
可以每次讀取一行內容,調用readlines()
一次讀取所有內容並按行返回list
。
IOError
異常處理由於文件讀寫時都有可能產生IOError
,一旦出錯,後面的f.close()
就不會調用。所以,為了保證無論是否出錯都能正確地關閉文件,我們對異常提前進行處理:
方法一:
try...finally
try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
方法二:
引入with
with open('/path/to/file', 'r') as f:
print(f.read())
第二種方法代碼更佳簡潔,並且不必調用f.close()
方法。
read()時可能會拋出UnicodeDecodeError(encoding不管是用utf8、gb2312、gbk編碼方式都不行)
解決辦法:
改為以二進制的方式讀取即可:open('xxx.xsl','rb')
f=open('F:\eclipse\eclipse\sy9T3.txt','rb')
f.read()
寫文件和讀文件是一樣的,唯一區別是調用open()
函數時,傳入標識符'w'
或者'wb'
表示寫文本文件或寫二進制文件:
f=open('F:\eclipse\eclipse\sy.txt','w')
f.write("I love Python!")
f.close()
進行完上面的操作後,點開文件
注:1.只有調用close()
方法時,操作系統才保證把沒有寫入的數據全部寫入磁盤。
2.以'w'
模式寫入文件時,如果文件已存在,會直接覆蓋(相當於刪掉後新寫入一個文件)。
可以傳入'a'
以追加(append)模式寫入 追加到文件末尾
f=open('F:\eclipse\eclipse\sy.txt','a')
f.write("end")
f.close()