Python open() 方法用於打開一個文件,並返回文件對象,在對文件進行處理過程都需要使用到這個函數,如果該文件無法被打開,會拋出 OSError
函數 | 語法 | 意義 |
---|---|---|
open | open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) | 打開一個文件,並返回文件對象 |
參數 | 意義 |
---|---|
file | 必需,文件路徑(相對或者絕對路徑) |
mode | 可選,文件打開模式 |
buffering | 設置緩衝 |
encoding | 一般使用utf8 |
errors | 報錯級別 |
newline | 區分換行符 |
closefd | 傳入的file參數類型 |
下面列表主要就文件打開模式mode做了下說明
mode | 意義 |
---|---|
t | 文本模式 (默認) |
r | 以只讀方式打開文件。文件的指針將會放在文件的開頭(默認) |
+ | 打開一個文件進行更新(可讀可寫) |
x | 寫模式,新建一個文件,如果該文件已存在則會報錯 |
b | 二進制模式 |
w | 打開一個文件只用於寫入,如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除;如果該文件不存在,創建新文件 |
a | 打開一個文件用於追加,如果該文件已存在,文件指針將會放在文件的結尾,也就是說,新的內容將會被寫入到已有內容之後;如果該文件不存在,創建新文件進行寫入 |
以上的幾種mode可以組合,比如rb,r+,rb+,wb,w+,wb+,ab,a+,ab+等等
open文件產生的對象file有以下常用的函數
函數 | 意義 |
---|---|
file.close() | 關閉文件,關閉後文件不能再進行讀寫操作 |
file.flush() | 刷新文件內部緩衝,直接把內部緩衝區的數據立刻寫入文件, 而不是被動的等待輸出緩衝區寫入 |
file.fileno() | 返回一個整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上 |
file.read([size] | 從文件讀取指定的字節數,如果未給定或爲負則讀取所有 |
file.readline([size]) | 讀取整行,包括 “\n” 字符 |
file.readlines([sizeint]) | 讀取所有行並返回列表,若給定sizeint>0,返回總和大約爲sizeint字節的行, 實際讀取值可能比 sizeint 較大, 因爲需要填充緩衝區 |
file.seek(offset[, whence]) | 移動文件讀取指針到指定位置 |
file.tell() | 返回文件當前位置 |
file.truncate([size]) | 從文件的首行首字符開始截斷,截斷文件爲 size 個字符,無 size 表示從當前位置截斷;截斷之後後面的所有字符被刪除,其中 Widnows 系統下的換行代表2個字符大小 |
file.write(str) | 將字符串寫入文件,返回的是寫入的字符長度 |
file.writelines(sequence) | 向文件寫入一個序列字符串列表,如果需要換行則要自己加入每行的換行符 |