Python open()完整參數


open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

打開 file 並返回一個相應的 文件對象.如果文件不能被打開, 拋出 OSError 異常.

參數 file 是一個字符串表示的文件名稱,或者一個數組表示的文件名稱。文件名稱可以是相對當前目錄的路徑,也可以是絕對路徑表示。(如果給出了一個文件描述器,則當關閉返回的I / O對象時除外,除非closefd設置為False

參數 mode 是指明打開文件的模式。默認值是'r',表示使用文本的方式打開文件來讀取。其他常見值為'w'用於寫入(如果文件已經存在則截斷文件),'x'用於排他性創建,'a' (在某些 Unix系統上,意味着全部寫入追加到文件的末尾,而不管當前的查找位置)。在文本模式下,如果未指定encoding,則使用的編碼取決於平台:locale.getpreferredencoding(False)以獲取當前語言環境編碼。(對於讀取和寫入原始字節,使用二進制模式,不指定編碼可用的模式有:

字符 含義
'r' 打開閱讀(默認)
'w' 打開寫入,首先截斷文件
'x' 打開獨占創建,如果文件已經存在則失敗
'a' 打開寫入,追加到文件末尾(如果存在)
'b' 二進制模式
't' 文本模式(默認)
'+' 打開磁盤文件進行更新(讀取和寫入)
'U' 通用換行符模式(已棄用)

 

默認模式為'r'(打開閱讀文本,'rt'的同義詞)。對於二進制讀寫訪問,模式'w b'打開並將文件截斷為0字節。'r b'打開文件而不截斷。

概述中所述,Python區分二進制和文本I / O。以二進制模式打開的文件(包括模式參數中的'b')將內容作為字節對象,而不進行任何解碼。在文本模式(默認情況下,或當't'包括在模式參數中)時,文件的內容將作為str ,這些字節已經使用平台相關編碼首先解碼,或者如果給出則使用指定的編碼

 

注意:Python不依賴於底層操作系統的文本文件的概念;所有的處理都是由Python本身完成的,因此是平台無關的。

參數 buffering是用於設置緩沖策略的可選整數。通過0以關閉緩沖(僅在二進制模式下允許),1選擇行緩沖(僅在文本模式下可用)和整數當未給出buffers參數時,默認緩沖策略工作如下:

  • 二進制文件以固定大小的塊緩沖;使用啟發式嘗試確定底層器件的“塊大小”並回退到io.DEFAULT_BUFFER_SIZE來選擇緩沖區的大小。在許多系統上,緩沖區通常為4096或8192字節長。
  • “交互式”文本文件(isatty()返回True的文件)使用行緩沖。其他文本文件使用上述策略用於二進制文件。

參數 encoding是用於解碼或編碼文件的編碼的名稱。這應該只在文本模式下使用。默認編碼是平台相關的(無論locale.getpreferredencoding()返回),但是可以使用Python支持的任何文本編碼有關支持的編碼列表,請參閱編解碼器模塊。

 

參數 errors是一個可選字符串,指定如何處理編碼和解碼錯誤 - 這不能在二進制模式下使用。雖然使用codecs.register_error()注冊的任何錯誤處理名稱也有效,但仍提供了多種標准錯誤處理程序(在錯誤處理程序下列出)。標准名稱包括:

  • 'strict'引發ValueError例外,如果存在編碼錯誤。默認值None具有相同的效果。
  • 'ignore'忽略錯誤。請注意,忽略編碼錯誤可能會導致數據丟失。
  • 'replace'會導致替換標記(例如'?')插入到存在格式錯誤的數據的位置。
  • 'surrogateescape'將表示任何不正確的字節,作為從U DC80到U DCFF范圍內的Unicode私人使用區域中的代碼點。當寫入數據時使用surrogateescape錯誤處理程序時,這些專用代碼點將被轉回相同的字節。這對於處理未知編碼中的文件很有用。
  • 僅當寫入文件時,才支持'xmlcharrefreplace'編碼不支持的字符將替換為相應的XML字符引用
  • 'backslashreplace'通過Python的反斜杠轉義序列替換格式錯誤的數據。
  • 'namereplace'(也僅在編寫時支持)用\ N {...}轉義序列替換不支持的字符。

參數 newline控制通用換行符模式的工作原理(僅適用於文本模式)。它可以是None'''\n''\r''\r\n'它的工作原理如下:

  • 從流讀取輸入時,如果newlineNone,則啟用通用換行符模式。輸入中的行可以以'\n''\r''\r\n'結尾,它們在返回給調用者之前被轉換成'\n'如果它是'',則啟用通用換行符模式,但行結尾將返回給調用者而不會轉換。如果它具有任何其它合法值,則輸入行僅由給定字符串終止,並且行結尾被返回給調用者而不會轉換。
  • 將輸出寫入流時,如果newlineNone,則寫入的任何'\n'字符都將轉換為系統默認行分隔符os.linesep如果newline'''\n',則不會進行轉換。如果newline是任何其他合法值,寫入的任何'\n'字符都將轉換為給定字符串。

如果closefdFalse並且給出了文件描述器而不是文件名,則當文件關閉時,基本文件描述器將保持打開。如果給定文件名,則closefd必須為True(默認值),否則將產生錯誤。

通過傳遞可調用對象opener可以使用自定義開啟器。然后通過調用opener文件標志)獲取文件對象的基礎文件描述器。opener必須返回一個打開的文件描述器(傳遞os.openopener 結果類似的功能 None)。

 

 

 


免責聲明!

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



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