字符編碼,及文件操做

1 運行程序的三個核心硬件

CPUpython

內存編輯器

硬盤優化

 

2 Python解釋器運行一個py文件的步驟

1 將Python解釋器的代碼從硬盤讀到內存中去編碼

2 將py文件從硬盤讀到內存去操作系統

3 Python讀取文件內容,識別Python語法,執行相應操做code

注意;普通的文本編輯器與Python解釋器的前兩部是同樣的blog

3 字符編碼

字符編碼是針對文字,字符編碼只跟文本有關接口

文本編輯器的輸入和輸出是兩個過程圖片

人在操做計算機輸入的是人能看的懂得字符內存

但計算機只能識別010101這樣的二進制數據

因此就會出現字符編碼表(字符編碼表就是字符與數字的對應關係)

 

1 ACSLL碼錶

用八位二進制表示一個字符

全部的英文字符+符號最多也就在125位左右

2 GBK

用2個bytes來表示一箇中文字符,還用一個bytes表示一個英文字符

 

基於上面的推導

任何一個國家想要讓計算機支持知己國家的語言,就必須建立一個本身的字符與數字的對應關係

3 萬國碼

應爲,每一個國家都有了本身的字符與數字對應關係的表,但只能本身國家的用,並不能與其餘國家交流,因此就出現了萬過嗎

unicode

統一用2個bytes來表示一個字符

不足之處

1浪費空間

2io 次數增長,程序運行效率減低

 

 

當內存中的UIcode的數據存入硬盤中會按照"utf-8"編碼

會將unicode的英文字符由原來的2個btes變爲1個bytes

會將unicode的中文字符由原來的2個bytes變爲3個bytes

 

utf-8在總體上優化了ubicode

如今的計算機內存都是unicde,硬盤都是utf-8

unicode的兩個特色:

1用戶輸入的時候,不管輸什麼字符的時候unicode都與其餘各國的編碼都有對應關係

2其餘各國編碼的數據由硬盤讀到內存中的時候unicode與其餘各國的編碼都有對應關係

 

數據由內存保存到硬盤

1內存中的unicode格式的二進制數據   》》》》編碼(encode)》》》》utf-8格式的二進制數據

2硬盤中的utf-8的二進制數據》》》解碼(decode)>>>>Unicode的二進制數據

 

 

保證亂碼在於

文本醫生麼編碼,就以什麼解碼

 

 

Python2 

py 文件默認使用ASCLL碼(應爲在開發Python2,nnicode尚未盛行)

Python3

py文件讀入解釋器默認以utf-8

 

文件頭

#coding:utf-8

應爲全部編碼都支持英文因此文件頭才能生曉

基於Python解釋器開發的軟件,只要是中文,前面都要加一個u

爲了就是Python2 你不指定文件頭時候默認用ASCII存儲書籍

若是指定文件頭那麼就會按照文件頭的編碼格式存儲數據

 

Python3 中字符串默認就是unicode編碼格式的二進制數據

 

注意。pycharm終端就是用的utf-8

Windows終端用的是GBK

 

2 文件操做

 

什麼是文件

文件就是操做系統給用戶提供了有個操做硬盤的簡易的接口

爲何要操做文件

咱們須要操做硬盤存儲文件

經過python來操做文件

f = open("text.text",mode="r",encoding="utf-8")
f.read()
f.close
print(f)

 

文件的打開模式

r 只讀模式

w 只寫模式

a 追加模式

操做文件單位的方式

t 文本模式

b 二進制模式(圖片,視屏文件)

注意;mode參數,能夠默認不寫。不寫就默認表明rt   只讀的文本文件的t能夠默認不寫,不寫就默認爲t

 

w模式(必定要慎用)

注意w模式;文件不存在的狀況下自動創立文件,當文件存在的狀況下會將文件內容清空,在存入

with open("text.tet",mode="w",encoding="utf-8") as f:
f.write()


#只寫模式的方法
#write() 向文件寫入內容。寫一行
#writelines()x向文件寫內容,能夠多寫先要建立一個列表等價於for循環一個一個的往裏面添加

  

 

r 模式(讀完內容,會繼續向下讀,讀的是空)

with open("text.tet",mode="r",encoding="utf-8") as f:
f.write()


#只讀模式的方法
#read() 讀取文件全部內容
#readline() 一行一行的讀,等價於for循環,能夠解決一次性讀完內存太高的問題
#readable() 是否可讀
#weitable() 是否可寫

  

a模式

with open("text.tet",mode="a",encoding="utf-8") as f:
f.write()


#只寫模式的方法
#write() 向文件寫入內容。寫一行在尾部追加內容
相關文章
相關標籤/搜索