成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Python中open()函數(shù)指定文件打開(kāi)方式的使用方法

這篇文章給大家分享的是有關(guān)Python中open()函數(shù)指定文件打開(kāi)方式的使用方法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

在個(gè)舊等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作專(zhuān)業(yè)公司,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,個(gè)舊網(wǎng)站建設(shè)費(fèi)用合理。

當(dāng)我們用open()函數(shù)去打開(kāi)文件的時(shí)候,有好幾種打開(kāi)的模式。

'r'->只讀
'w'->只寫(xiě),文件已存在則清空,不存在則創(chuàng)建。
'a'->追加,寫(xiě)到文件末尾
'b'->二進(jìn)制模式,比如打開(kāi)圖像、音頻、word文件。
'+'->更新(可讀可寫(xiě))

這個(gè)帶'+'號(hào)的有點(diǎn)難以理解,上代碼感受下。

with open('foo.txt', 'w+') as f: 
    f.write('bar\n') 
    f.seek(0)  
    data = f.read()

可以看到,上面這段代碼,它不但可以寫(xiě),還可以讀出來(lái)。注意要先定位到開(kāi)頭,f.seek(0),不然讀出來(lái)的是空數(shù)據(jù)。

一些人可能會(huì)有迷惑,既然帶'+'號(hào)是可讀可寫(xiě),那'w+'跟'r+'有什么不同。

那就是,

'w+'會(huì)清空,會(huì)創(chuàng)建 (文件已存在則清空,不存在則創(chuàng)建。)

'r+'不清空,不創(chuàng)建

不要用二進(jìn)制模式打開(kāi)文本文件

先看下面代碼的“詭異”現(xiàn)象。

假設(shè)在windows下,我有個(gè)f.txt文件,里面的內(nèi)容是下面這樣的。

hello

world

代碼一

with open('f.txt', 'r') as f: 
    print f.readlines() 
with open('f.txt', 'rb') as f: 
    print f.readlines()

輸出

['hello\n', 'world\n']
['hello\r\n', 'world\r\n']

代碼二

with open('f.txt', 'rb') as f: 
    data = f.read() 
with open('f.txt', 'w') as f: 
    f.write(data)

打開(kāi)文件,變成了下面這樣,

hello^M

world^M

首先,先理解換行符'\n'跟回車(chē)符'\r'的概念。

'\n',換行符(LF,Line-Feed ),指新的一行。
'\r',回車(chē)符(CR,Carriage-Return),指回到行頭。

因?yàn)樵诓煌到y(tǒng)下的換行標(biāo)識(shí)是不一樣的。

windows->'\r\n'
unix->'\n'
mac->'\r'

這就是為什么windows下的txt在linux打開(kāi)的時(shí)候行尾會(huì)有'^M'。

這就是為什么我在linux下跑腳本導(dǎo)出游戲數(shù)據(jù)下到本地windows打開(kāi)變成了一行。

其實(shí)文本文件也是二進(jìn)制文件,是文本編碼的二進(jìn)制文件,文本文件對(duì)一些不可見(jiàn)字符進(jìn)行了處理,增加可讀性。

在python中,可以通過(guò)os.linesep獲得當(dāng)前系統(tǒng)的換行標(biāo)識(shí)。比如在windows下,os.linesep是'\r\n'。

在python中操作換行標(biāo)識(shí)的時(shí)候,并不用管是在什么平臺(tái)下,直接用'\n'就行了,python會(huì)自動(dòng)根據(jù)不同系統(tǒng)轉(zhuǎn)成不同標(biāo)識(shí)。

有了上面這些理論依據(jù),就可以解析本文開(kāi)頭代碼的“詭異”現(xiàn)象了。

代碼一中,用文本模式打開(kāi)的文件,換行標(biāo)識(shí)會(huì)被python處理成'\n',而用二進(jìn)制模式打開(kāi)則原封不動(dòng)。

代碼二中,用二進(jìn)制模式打開(kāi),用文本模式寫(xiě)入。二進(jìn)制打開(kāi)原封不動(dòng)還是'\r\n',而文本模式寫(xiě)入的時(shí)候因?yàn)閜ython會(huì)把'\n'轉(zhuǎn)成'\r\n',所以其實(shí)就等于是寫(xiě)入了'\r\r\n',于是就多了個(gè)'^M'。

感謝各位的閱讀!關(guān)于Python中open()函數(shù)指定文件打開(kāi)方式的使用方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

分享文章:Python中open()函數(shù)指定文件打開(kāi)方式的使用方法
網(wǎng)頁(yè)鏈接:http://jinyejixie.com/article32/pgcjpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、標(biāo)簽優(yōu)化、微信公眾號(hào)、動(dòng)態(tài)網(wǎng)站企業(yè)建站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
尼勒克县| 合阳县| 晋宁县| 赣州市| 弥渡县| 黄平县| 澄城县| 双桥区| 诏安县| 临江市| 府谷县| 得荣县| 虹口区| 慈利县| 太保市| 郯城县| 新疆| 泽州县| 清远市| 玛曲县| 金坛市| 昆明市| 平定县| 正镶白旗| 理塘县| 汶上县| 宁国市| 莱州市| 渝中区| 红原县| 县级市| 宜城市| 镇江市| 芜湖县| 伊吾县| 梅州市| 东丰县| 沙田区| 大冶市| 伊金霍洛旗| 成安县|