位置: 編程技術(shù) - 正文
推薦整理分享探究python中open函數(shù)的使用(python中的open),希望有所幫助,僅作參考,歡迎閱讀內(nèi)容。
文章相關(guān)熱門搜索詞:python的openpyxl,pythonwith open,python中open用法,pythonwith open,pythonwith open,python openfoam,在python中open,在python中open,內(nèi)容如對(duì)您有幫助,希望把文章鏈接給更多的朋友!
最近,開始學(xué)習(xí)python的開發(fā),遇到了一點(diǎn)文件操作的問題,探究一下open函數(shù)的使用。
一、open()的函數(shù)原型open(file, mode=‘r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)從官方文檔中我們可以看到open函數(shù)有很多的參數(shù),我們常用的是file,mode和encoding,對(duì)于其它的幾個(gè)參數(shù),平時(shí)不常用,也簡單介紹一下。buffering的可取值有0,1, >1三個(gè),0代表buffer關(guān)閉(只適用于二進(jìn)制模式),1代表line buffer(只適用于文本模式),>1表示初始化的buffer大小;encoding表示的是返回的數(shù)據(jù)采用何種編碼,一般采用utf8或者gbk;errors的取值一般有strict,ignore,當(dāng)取strict的時(shí)候,字符編碼出現(xiàn)問題的時(shí)候,會(huì)報(bào)錯(cuò),當(dāng)取ignore的時(shí)候,編碼出現(xiàn)問題,程序會(huì)忽略而過,繼續(xù)執(zhí)行下面的程序。newline可以取的值有None, n, r, '', ‘rn' ,用于區(qū)分換行符,但是這個(gè)參數(shù)只對(duì)文本模式有效;closefd的取值,是與傳入的文件參數(shù)有關(guān),默認(rèn)情況下為True,傳入的file參數(shù)為文件的文件名,取值為False的時(shí)候,file只能是文件描述符,什么是文件描述符,就是一個(gè)非負(fù)整數(shù),在Unix內(nèi)核的系統(tǒng)中,打開一個(gè)文件,便會(huì)返回一個(gè)文件描述符。二、file() 與open()兩者都能夠打開文件,對(duì)文件進(jìn)行操作,也具有相似的用法和參數(shù),但是,在我看來,這兩種文件打開方式有本質(zhì)的區(qū)別,file為文件類,用file()來打開文件,相當(dāng)于這是在構(gòu)造文件類,而用open()打開文件,是用python的內(nèi)建函數(shù)來操作。三、參數(shù)Mode的基本取值
r、w、a為打開文件的基本模式,對(duì)應(yīng)著只讀、只寫、追加模式;b、t、+、U這四個(gè)字符,與以上的文件打開模式組合使用,二進(jìn)制模式,文本模式,讀寫模式、通用換行符,根據(jù)實(shí)際情況組合使用、
四、 常見的mode取值組合1、r或rt 默認(rèn)模式,文本模式讀2、rb 二進(jìn)制文件3、w或wt 文本模式寫,打開前文件存儲(chǔ)被清空4、wb 二進(jìn)制寫,文件存儲(chǔ)同樣被清空 5、a 追加模式,只能寫在文件末尾6、a+ 可讀寫模式,寫只能寫在文件末尾 7、w+ 可讀寫,與a+的區(qū)別是要清空文件內(nèi)容8、r+ 可讀寫,與a+的區(qū)別是可以寫到文件任何位置
五、幾個(gè)模式的區(qū)別為了測(cè)試不同模式的區(qū)別,我們用一小段代碼來測(cè)試寫入文件中的直觀不同。
(1)a+與w+模式的區(qū)別
(2)a+與r+模式
在寫入文件前,我們?cè)谏厦婺嵌未a中加上一句 seek(6),用來定位寫入文件寫入位置。
注意:r+模式打開文件時(shí),此文件必須存在,否則就會(huì)報(bào)錯(cuò),‘r'模式也如此六、換行符帶來的煩惱當(dāng)你用二進(jìn)制模式將帶有換行符的字符串寫入txt文件時(shí),數(shù)據(jù)存儲(chǔ)是正確的,但是當(dāng)用windows平臺(tái)的記事本程序打開時(shí),你看到的換行符確實(shí)一個(gè)個(gè)的小黑塊,但是,用文本模式,就不存在這樣的問題。在這里,涉及到了不同平臺(tái)由于編碼的問題,而對(duì)換行符有不同的識(shí)別。unix或者linux系統(tǒng)識(shí)別n為換行符的標(biāo)識(shí),但是windows平臺(tái)的編碼,對(duì)n不予理睬。但是python自身帶有轉(zhuǎn)化功能,用文本模式的時(shí)候,你不會(huì)看到由于平臺(tái)不同而造成的換行效果不同,但是,二進(jìn)制模式的時(shí)候,python便不會(huì)再去轉(zhuǎn)化,是什么,就寫進(jìn)去什么,此時(shí)的換行符,再用文本模式打開,windows下就不識(shí)別‘n'換行符了。
標(biāo)簽: python中的open
本文鏈接地址:http://esstyw.cn/biancheng/383361.html 轉(zhuǎn)載請(qǐng)保留說明!上一篇:Saltstack快速入門簡單匯總(saltstack安裝)
下一篇:詳解設(shè)計(jì)模式中的工廠方法模式在Python程序中的運(yùn)用(設(shè)計(jì)模式含義)
網(wǎng)站地圖: 企業(yè)信息 工商信息 財(cái)稅知識(shí) 網(wǎng)絡(luò)常識(shí) 編程技術(shù)
友情鏈接: 武漢網(wǎng)站建設(shè)