python open函数参数newline_Python open() 函数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=T)
模式描述
r
以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb
以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認模式。
r+
打開一個文件用于讀寫。文件指針將會放在文件的開頭。
rb+
以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。
w
打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb
以二進制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
w+
打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb+
以二進制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a
打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
ab
以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
a+
打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用于讀寫。
ab+
以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用于讀寫。
缺省時的模式就相當于’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是用來實現自己定義打開文件方式。這種使用方式比較復雜,比如打開相對目錄的文件,可以采用下面的例子方式:
>>>?import?os
>>>?dir_fd?=?os.open('somedir',?os.O_RDONLY)
>>>?def?opener(path,?flags):
...?????return?os.open(path,?flags,?dir_fd=dir_fd)
...
>>>?with?open('spamspam.txt',?'w',?opener=opener)?as?f:
...?????print('This?will?be?written?to?somedir/spamspam.txt',?file=f)
...
>>>?os.close(dir_fd)??#?don't?leak?a?file?descriptor
總結
以上是生活随笔為你收集整理的python open函数参数newline_Python open() 函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 升级mysql版本 lamp
- 下一篇: arcmap创建空间索引_GIS中创建空