本函數是打開一個文件並返回文件對象。如果文件不能打開,拋出異常OSError。
參數解釋:
file:是一個字符串表示的文件名稱,或者一個數組表示的文件名稱。文件名稱可以是相對當前目錄的路徑,也可以是絕對路徑表示。
mode:是指明打開文件的模式。默認值是’r’,表示使用文本的方式打開文件來讀取。
‘r’表示打開文件只讀,不能寫。
‘w’表示打開文件只寫,並且清空文件。
‘x’表示獨占打開文件,如果文件已經存打開就會失敗。
‘a’表示打開文件寫,不清空文件,在文件后尾追加的方式寫入。
‘b’表示二進制的模式打開文件。
‘t’表示文本模式,默認情況下就是這種模式。
‘+’打開文件更新(讀取或寫入)。
缺省時的模式就相當於’rt’。比如’w+b’就是打開文件進入讀寫,把文件清空;’r+b’打開文件,但不把文件清空。
buffering:是一個可選的參數,用來表示緩沖區的策略選擇。設置為0時,表示不使用緩沖區,直接讀寫,僅在二進制模式下有效。設置為1時,表示在文本模式下使用行緩沖區方式。設置為大於1時,表示緩沖區的設置大小。如果參數buffering沒有給出,使用默認時,會采用下面策略來選擇:
1)對於二進制文件模式時,采用固定塊內存緩沖區方式,內存塊的大小根據系統設備的分配的磁盤塊來決定,如果獲取系統磁盤塊的大小失敗,就使用內部常量io.DEFAULT_BUFFER_SIZE定義的大小。一般的操作系統上,塊的大小是4096或者8192字節大小。
2)對於交互的文本文件(采用isatty()判斷為True)時,采用一行緩沖區的方式。其它文本文件使用跟二進制一樣的方式。
encoding:是指明對文件編碼,僅適用於文本文件。如果不明編碼方式,默認是使用locale.getpreferredencoding()函數返回的編碼方式。
errors:是用來指明編碼和解碼錯誤時怎么樣處理。不能在二進制的模式下使用。
1)當指明為’strict’時,編碼出錯則拋出異常ValueError。
2)當指明為’ignore’時,忽略錯誤。
3)當指明為’replace’時,使用某字符進行替代模式,比如使用’?’來替換出錯的。
4)其它相應還有surrogateescape/xmlcharrefreplacs/backslashreplace。
newline:是用來控制文本模式之下,一行的結束字符。可以是None,’’,\n,\r,\r\n等。
當在讀取模式下,如果新行符為None,那么就作為通用換行符模式工作,意思就是說當遇到\n,\r或\r\n都可以作為換行標識,並且統一轉換為\n作為文本輸入的換行符。當設置為空’’時,也是通用換行符模式工作,但不作轉換為\n,輸入什么樣的,就保持原樣全輸入。當設置為其它相應字符時,就會判斷到相應的字符作為換行符,並保持原樣輸入到文本。
當在輸出模式時,如果新行符為None,那么所有輸出文本都是采用\n作為換行符。如果設置為’’或者\n時,不作任何的替換動作。如果是其它字符,會在字符后面添加\n作為換行符。
closefd:是用來當給一個文件句柄傳進來時,而當退出文件使用時,而不對文件句柄進行關閉。如果傳遞一個文件名進來,這個參數無效,必定為True方式。
opener:是用來實現自己定義打開文件方式。這種使用方式比較復雜,比如打開相對目錄的文件,可以采用下面的例子方式:
————————————————
版權聲明:本文為CSDN博主「caimouse」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/caimouse/article/details/43370101