CPUpython
內存編輯器
硬盤優化
1 將Python解釋器的代碼從硬盤讀到內存中去編碼
2 將py文件從硬盤讀到內存去操作系統
3 Python讀取文件內容,識別Python語法,執行相應操做code
注意;普通的文本編輯器與Python解釋器的前兩部是同樣的blog
字符編碼是針對文字,字符編碼只跟文本有關接口
文本編輯器的輸入和輸出是兩個過程圖片
人在操做計算機輸入的是人能看的懂得字符內存
但計算機只能識別010101這樣的二進制數據
因此就會出現字符編碼表(字符編碼表就是字符與數字的對應關係)
用八位二進制表示一個字符
全部的英文字符+符號最多也就在125位左右
用2個bytes來表示一箇中文字符,還用一個bytes表示一個英文字符
基於上面的推導
任何一個國家想要讓計算機支持知己國家的語言,就必須建立一個本身的字符與數字的對應關係
應爲,每一個國家都有了本身的字符與數字對應關係的表,但只能本身國家的用,並不能與其餘國家交流,因此就出現了萬過嗎
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
什麼是文件
文件就是操做系統給用戶提供了有個操做硬盤的簡易的接口
爲何要操做文件
咱們須要操做硬盤存儲文件
經過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() 向文件寫入內容。寫一行在尾部追加內容