淺析Python 字符編碼與文件處理
Python字符編碼
目前計(jì)算機(jī)內(nèi)存的字符編碼都是Unicode,目前國(guó)內(nèi)的windows操作系統(tǒng)采用的是gbk。
python2默認(rèn)的字符編碼方式是ASCII
python3默認(rèn)的字符編碼方式是Unicode
.py文件頭部的#coding:utf-8是幫助python識(shí)別.py文件的編碼方式,故在寫(xiě).py文件時(shí)要注意文件頭和文件保存時(shí)的編碼方式要相同,否則可能會(huì)出現(xiàn)亂碼
python程序運(yùn)行過(guò)程:
python的解釋器現(xiàn)在內(nèi)存中啟動(dòng) 解釋器把要運(yùn)行的文件以文本文件的形式讀進(jìn)內(nèi)存 解釋器按照文件的語(yǔ)法格式解釋執(zhí)行代碼python2和python3程序的運(yùn)行方式基本相同
python2的解釋器在運(yùn)行程序時(shí),將文件內(nèi)的代碼按照文件頭的編碼讀進(jìn)內(nèi)存。例如文件頭部的編碼是gbk,python2讀進(jìn)內(nèi)存的時(shí)候,直接把文件在硬盤(pán)里的gbk二進(jìn)制編碼讀進(jìn)內(nèi)存。如果在不是以gbk為默認(rèn)編碼的終端輸出時(shí),會(huì)出現(xiàn)亂碼。python2可以在字符串對(duì)象前加’u’表示Unicode字符,但是這樣就不是str變量了。雖然pyhton2也能支持Unicode編碼,但是這就像給python2打了一個(gè)大補(bǔ)丁。python2的Unicode對(duì)象就是python3str對(duì)象。
python3的解釋器就好多了,它在執(zhí)行文件內(nèi)的代碼之前會(huì)先將代碼按照文件頭的編碼轉(zhuǎn)換成Unicode編碼讀進(jìn)內(nèi)存。這樣無(wú)論是在什么編碼的機(jī)器上運(yùn)行,Unicode編碼都能很好的轉(zhuǎn)換成相應(yīng)的編碼。
Python 文件處理
python程序不能直接操作硬盤(pán)的文件,一般都是通過(guò)操作系統(tǒng)提供的接口間接地操作文件。
一般來(lái)說(shuō),對(duì)文件的操作的mode有兩種,t:字符方式 b:二進(jìn)制方式
字符方式只能操作文本文件,在打開(kāi)文件的時(shí)候需要指定encoding,不然會(huì)因?yàn)槎叹洳粶?zhǔn)確產(chǎn)生亂碼
二進(jìn)制方式可以操作所有的文件,在打開(kāi)文件的時(shí)候不要指定encoding
操作完文件后調(diào)用文件對(duì)象的close()函數(shù)會(huì)關(guān)閉文件,這只是關(guān)閉操作系統(tǒng)對(duì)文件的訪(fǎng)問(wèn),在程序里文件對(duì)象會(huì)在程序結(jié)束的時(shí)候自動(dòng)釋放,所以在操作文件結(jié)束后,記得調(diào)用close()函數(shù),釋放系統(tǒng)資源。當(dāng)然可以用with上下文管理自動(dòng)釋放資源。
以上就是淺析Python 字符編碼與文件處理的詳細(xì)內(nèi)容,更多關(guān)于Python 字符編碼與文件處理的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案2. 告別AJAX實(shí)現(xiàn)無(wú)刷新提交表單3. chat.asp聊天程序的編寫(xiě)方法4. 使用XSL將XML文檔中的CDATA注釋輸出為HTML文本5. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向6. ASP錯(cuò)誤捕獲的幾種常規(guī)處理方式7. 小技巧處理div內(nèi)容溢出8. PHP循環(huán)與分支知識(shí)點(diǎn)梳理9. XML入門(mén)的常見(jiàn)問(wèn)題(一)10. css進(jìn)階學(xué)習(xí) 選擇符
