Python標准庫:內置函數open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=T)


本函數是打開一個文件並返回文件對象。如果文件不能打開,拋出異常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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM