https://www.jianshu.com/p/34d7fff5fc51
1、open() 方法
意義:打開一個文件並返回文件對象,如果該文件無法被打開,會拋出OSError。最后一定要調用close()方法保證關閉文件對象。
公式:open( file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
參數(一般只用到file,mode和encoding)
- file: 必需,文件路徑(相對或者絕對路徑)。
- mode: 可選,文件打開模式
- buffering: 設置緩沖
- encoding: 一般使用utf8
- errors: 報錯級別
- newline: 區分換行符
- closefd: 傳入的file參數類型
- opener:
mode參數
方式 | 解釋 |
---|---|
'r' | 讀模式(默認) |
'w' | 寫模式,打開時會清空文件 |
'x' | 寫模式,新建一個文件,如果該文件已存在則會報錯。 |
'a' | 添加模式,寫文件只能寫到文件末尾,不能讀 |
'b' | 二進制模式(默認為文本模式,如果要以二進制模式打開,加上'b') |
't' | 文本模式 (默認) |
'+' | 打開一個文件進行更新(可讀可寫) |
'U' | 通用換行模式(不推薦) |
注意:
(1)r+:可讀寫,打開時不清空文件,可寫到文件任何位置。默認在文件開始,因此會覆寫文件。
(2)a+:可讀寫,打開時不清空文件,只能寫到文件末尾。
(3)使用open()方法,最后一定要保證關閉文件對象,即調用close()方法。原因:當我們寫文件時,操作系統往往不會立刻把數據寫入磁盤,而是放到內存緩存起來,空閑的時候再慢慢寫入。只有調用close()方法時,操作系統才保證把沒有寫入的數據全部寫入磁盤同時釋放資源。忘記調用close()的后果是數據可能只寫了一部分到磁盤,剩下的丟失了。
2、with open() as 用法
正常情況下,想要打開一個文件並且保證該文件會被關閉。我們需要
try: f = open('C:/path/to/file', 'r') # do something about f finally: if f: f.close()
使用with...as...
能確保文件一定被關閉。
with open('/path/to/file', 'r') as f: f.read() ...