淺析Python 字符編碼與文件處理
Python字符編碼
目前計算機內(nèi)存的字符編碼都是Unicode,目前國內(nèi)的windows操作系統(tǒng)采用的是gbk。
python2默認(rèn)的字符編碼方式是ASCII
python3默認(rèn)的字符編碼方式是Unicode
.py文件頭部的#coding:utf-8是幫助python識別.py文件的編碼方式,故在寫.py文件時要注意文件頭和文件保存時的編碼方式要相同,否則可能會出現(xiàn)亂碼
python程序運行過程:
- python的解釋器現(xiàn)在內(nèi)存中啟動
- 解釋器把要運行的文件以文本文件的形式讀進內(nèi)存
- 解釋器按照文件的語法格式解釋執(zhí)行代碼
python2和python3程序的運行方式基本相同
python2的解釋器在運行程序時,將文件內(nèi)的代碼按照文件頭的編碼讀進內(nèi)存。例如文件頭部的編碼是gbk,python2讀進內(nèi)存的時候,直接把文件在硬盤里的gbk二進制編碼讀進內(nèi)存。如果在不是以gbk為默認(rèn)編碼的終端輸出時,會出現(xiàn)亂碼。python2可以在字符串對象前加'u'表示Unicode字符,但是這樣就不是str變量了。雖然pyhton2也能支持Unicode編碼,但是這就像給python2打了一個大補丁。python2的Unicode對象就是python3str對象。
python3的解釋器就好多了,它在執(zhí)行文件內(nèi)的代碼之前會先將代碼按照文件頭的編碼轉(zhuǎn)換成Unicode編碼讀進內(nèi)存。這樣無論是在什么編碼的機器上運行,Unicode編碼都能很好的轉(zhuǎn)換成相應(yīng)的編碼。
Python 文件處理
python程序不能直接操作硬盤的文件,一般都是通過操作系統(tǒng)提供的接口間接地操作文件。
一般來說,對文件的操作的mode有兩種,t:字符方式 b:二進制方式
字符方式只能操作文本文件,在打開文件的時候需要指定encoding,不然會因為短句不準(zhǔn)確產(chǎn)生亂碼
二進制方式可以操作所有的文件,在打開文件的時候不要指定encoding
操作完文件后調(diào)用文件對象的close()函數(shù)會關(guān)閉文件,這只是關(guān)閉操作系統(tǒng)對文件的訪問,在程序里文件對象會在程序結(jié)束的時候自動釋放,所以在操作文件結(jié)束后,記得調(diào)用close()函數(shù),釋放系統(tǒng)資源。當(dāng)然可以用with上下文管理自動釋放資源。
以上就是淺析Python 字符編碼與文件處理的詳細(xì)內(nèi)容,更多關(guān)于Python 字符編碼與文件處理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python接口自動化淺析logging封裝及實戰(zhàn)操作
本篇文章主要給大家介紹將了logging常用配置放入yaml配置文件、logging日志封裝及結(jié)合登錄用例,講解日志如何在接口測試中運用的實例操作2021-08-08java中兩個byte數(shù)組實現(xiàn)合并的示例
今天小編就為大家分享一篇java中兩個byte數(shù)組實現(xiàn)合并的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Django Form設(shè)置文本框為readonly操作
這篇文章主要介紹了Django Form設(shè)置文本框為readonly操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07python忽略警告(warning)的3種方法小結(jié)
python開發(fā)中經(jīng)常遇到報錯的情況,但是warning通常并不影響程序的運行,而且有時特別討厭,下面我們來說下如何忽略warning錯誤,這篇文章主要給大家介紹了關(guān)于python忽略警告(warning)的3種方法,需要的朋友可以參考下2023-10-10Python django實現(xiàn)簡單的郵件系統(tǒng)發(fā)送郵件功能
這篇文章主要介紹了Python django實現(xiàn)簡單的郵件系統(tǒng)發(fā)送郵件功能,結(jié)合實例形式分析了django發(fā)送郵件的實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下2017-07-07