1. 程式人生 > 程式設計 >淺析Python 字元編碼與檔案處理

淺析Python 字元編碼與檔案處理

Python字元編碼

目前計算機記憶體的字元編碼都是Unicode,目前國內的windows作業系統採用的是gbk。

python2預設的字元編碼方式是ASCII

python3預設的字元編碼方式是Unicode

.py檔案頭部的#coding:utf-8是幫助python識別.py檔案的編碼方式,故在寫.py檔案時要注意檔案頭和檔案儲存時的編碼方式要相同,否則可能會出現亂碼

python程式執行過程:

  1. python的直譯器現在記憶體中啟動
  2. 直譯器把要執行的檔案以文字檔案的形式讀進記憶體
  3. 直譯器按照檔案的語法格式解釋執行程式碼

python2和python3程式的執行方式基本相同

python2的直譯器在執行程式時,將檔案內的程式碼按照檔案頭的編碼讀進記憶體。例如檔案頭部的編碼是gbk,python2讀進記憶體的時候,直接把檔案在硬盤裡的gbk二進位制編碼讀進記憶體。如果在不是以gbk為預設編碼的終端輸出時,會出現亂碼。python2可以在字串物件前加'u'表示Unicode字元,但是這樣就不是str變量了。雖然pyhton2也能支援Unicode編碼,但是這就像給python2打了一個大補丁。python2的Unicode物件就是python3str物件。

python3的直譯器就好多了,它在執行檔案內的程式碼之前會先將程式碼按照檔案頭的編碼轉換成Unicode編碼讀進記憶體。這樣無論是在什麼編碼的機器上執行,Unicode編碼都能很好的轉換成相應的編碼。

Python 檔案處理

python程式不能直接操作硬碟的檔案,一般都是通過作業系統提供的介面間接地操作檔案。

一般來說,對檔案的操作的mode有兩種,t:字元方式 b:二進位制方式

字元方式只能操作文字檔案,在開啟檔案的時候需要指定encoding,不然會因為短句不準確產生亂碼

二進位制方式可以操作所有的檔案,在開啟檔案的時候不要指定encoding

操作完檔案後呼叫檔案物件的close()函式會關閉檔案,這只是關閉作業系統對檔案的訪問,在程式裡檔案物件會在程式結束的時候自動釋放,所以在操作檔案結束後,記得呼叫close()函式,釋放系統資源。當然可以用with上下文管理自動釋放資源。

以上就是淺析Python 字元編碼與檔案處理的詳細內容,更多關於Python 字元編碼與檔案處理的資料請關注我們其它相關文章!