python open函数参数newline_Python open() 函数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=T)
模式描述
r
以只讀方式打開文件。文件的指針將會(huì)放在文件的開頭。這是默認(rèn)模式。
rb
以二進(jìn)制格式打開一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開頭。這是默認(rèn)模式。
r+
打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。
rb+
以二進(jìn)制格式打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。
w
打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb
以二進(jìn)制格式打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
w+
打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb+
以二進(jìn)制格式打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a
打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
ab
以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
a+
打開一個(gè)文件用于讀寫。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。
ab+
以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。
缺省時(shí)的模式就相當(dāng)于’rt’。比如’w+b’就是打開文件進(jìn)入讀寫,把文件清空;’r+b’打開文件,但不把文件清空。
參數(shù)buffering是一個(gè)可選的參數(shù),用來表示緩沖區(qū)的策略選擇。設(shè)置為0時(shí),表示不使用緩沖區(qū),直接讀寫,僅在二進(jìn)制模式下有效。設(shè)置為1時(shí),表示在文本模式下使用行緩沖區(qū)方式。設(shè)置為大于1時(shí),表示緩沖區(qū)的設(shè)置大小。如果參數(shù)buffering沒有給出,使用默認(rèn)時(shí),會(huì)采用下面策略來選擇:
1)對(duì)于二進(jìn)制文件模式時(shí),采用固定塊內(nèi)存緩沖區(qū)方式,內(nèi)存塊的大小根據(jù)系統(tǒng)設(shè)備的分配的磁盤塊來決定,如果獲取系統(tǒng)磁盤塊的大小失敗,就使用內(nèi)部常量io.DEFAULT_BUFFER_SIZE定義的大小。一般的操作系統(tǒng)上,塊的大小是4096或者8192字節(jié)大小。
2)對(duì)于交互的文本文件(采用isatty()判斷為True)時(shí),采用一行緩沖區(qū)的方式。其它文本文件使用跟二進(jìn)制一樣的方式。
參數(shù)encoding是指明對(duì)文件編碼,僅適用于文本文件。如果不明編碼方式,默認(rèn)是使用locale.getpreferredencoding()函數(shù)返回的編碼方式。
參數(shù)errors是用來指明編碼和解碼錯(cuò)誤時(shí)怎么樣處理。不能在二進(jìn)制的模式下使用。
1)當(dāng)指明為’strict’時(shí),編碼出錯(cuò)則拋出異常ValueError。
2)當(dāng)指明為’ignore’時(shí),忽略錯(cuò)誤。
3)當(dāng)指明為’replace’時(shí),使用某字符進(jìn)行替代模式,比如使用’?’來替換出錯(cuò)的。
4)其它相應(yīng)還有surrogateescape/xmlcharrefreplacs/backslashreplace。
參數(shù)newline是用來控制文本模式之下,一行的結(jié)束字符??梢允荖one,’’,\n,\r,\r\n等。
當(dāng)在讀取模式下,如果新行符為None,那么就作為通用換行符模式工作,意思就是說當(dāng)遇到\n,\r或\r\n都可以作為換行標(biāo)識(shí),并且統(tǒng)一轉(zhuǎn)換為\n作為文本輸入的換行符。當(dāng)設(shè)置為空’’時(shí),也是通用換行符模式工作,但不作轉(zhuǎn)換為\n,輸入什么樣的,就保持原樣全輸入。當(dāng)設(shè)置為其它相應(yīng)字符時(shí),就會(huì)判斷到相應(yīng)的字符作為換行符,并保持原樣輸入到文本。
當(dāng)在輸出模式時(shí),如果新行符為None,那么所有輸出文本都是采用\n作為換行符。如果設(shè)置為’’或者\(yùn)n時(shí),不作任何的替換動(dòng)作。如果是其它字符,會(huì)在字符后面添加\n作為換行符。
參數(shù)closefd是用來當(dāng)給一個(gè)文件句柄傳進(jìn)來時(shí),而當(dāng)退出文件使用時(shí),而不對(duì)文件句柄進(jìn)行關(guān)閉。如果傳遞一個(gè)文件名進(jìn)來,這個(gè)參數(shù)無效,必定為True方式。
參數(shù)opener是用來實(shí)現(xiàn)自己定義打開文件方式。這種使用方式比較復(fù)雜,比如打開相對(duì)目錄的文件,可以采用下面的例子方式:
>>>?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
總結(jié)
以上是生活随笔為你收集整理的python open函数参数newline_Python open() 函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 升级mysql版本 lamp
- 下一篇: python 两个数据框合并计算_一文掌