字符编码和文件处理
字符編碼
1、知識儲備
cpu
內存
硬盤
2 文本編輯器存原理
結論:在編寫py的程序的時候,是沒有語法的限制的,編輯的結果
跟編寫一個普通的文本文件是沒有任何區別,
只有把py程序交給python解釋并且在運行的第三個階段才有了
語言意義
3 python解釋器執行python程序的原理
python3 test.py
第一階段:先啟動python解釋器這個軟件
第二階段:把test.py文件的內容讀入內存
第三階段:解釋執行,識別語法
?
4、什么是字符編碼:人類的的字符翻譯成計算機能讀懂的語言(二進制)
人類的字符----》翻譯-------》數字
翻譯的過程必須遵循一個標準:字符與數字一一對應的關系
這個標準稱之為字符編碼表
ASCII
8bit=1bytes,一個英文字符占用1字節
GBK
16bit=2bytes ,2個字節表示一個中文字符
unicode(內存中固定的編碼):
16bit=2bytes,2個字節表示一個字符
utf-8:Unicode Transformation Format(unicode的一種轉換的版本)
3bytes表示一個中文字符
保證不亂碼的核心就是:
文件是以什么編碼存的,就必須以該讀取
強調:我們能控制的只是存到硬盤上的編碼
python3解釋器:默認utf-8編碼
python2解釋器:默認ascii編碼
文件頭的作用:#coding:utf-8 是告訴python解釋器,用我指定的字符編碼
三:執行python程序第三個階段發生的事
會識別python語法,定義的字符串類型又涉及到字符編碼的概念
x='上' #x=str('上')
python2:
字符串分為兩種形式:
x='上' #python2的str類型會按照文件頭指定的編碼來存‘上’
python3:
str:被存成了unicode
bytes:字節等同于二進制看
四:轉換
unicode---編碼encode--->gbk
gbk------->解碼decode---》unicode
文件處理:
默認的是t模式,t不能單獨使用,必須是rt,wt,at。
1、打開文件
f=open(r'文件的路徑’,mode='打開文件的模式’,encoding='操作文件的字符編碼’)
f=open(r'a.txt',mode='r')
2.讀/寫:
data=f.read()
3.關閉文件
f.close() #回收操作系統的資源。
?
文件操作的模式有三種:r,w,a
f=open('a.txt') 默認打開文件的模式是rt模式,r代表只讀,t代表文本文件
r模式:只讀模式,當文件不存在時會報錯
f.open('a.txt',moed='r',encoding='utf-8')
print(f.read()) ? ?#讀出來是字符串為單位
?
with open('a.txt',encoding='utf-8') as f:
for line in f:
?print(line,end='') ? ? ?#優先使用此方法,循環讀取每一行的內容。
?
for line in f.readlines()
print(line,end='') ? ?#循環文件不建議用此方法,因為在文件過大的情況下有可能會撐爆內存。
?
w模式:只寫模式,當文件存在時則清空,當文件不存在時則創建新的空文檔
f=open('a.txt',mode='w',encoding='utf-8')
f.write('123456\n')
?
f.writelines(['1111111\n','222222\n','3333333\n']) ? ? ?#相當于for循環
f.close()
a模式:只追加寫模式,當文件不存在時,創建文件,當文件存在時,光標直接跑到文件末尾。
f=open('b.log',mode='a',encoding='utf-8')
print(f.writable())
f.readlines() ? ?#報錯
f.write('66666\n')
f.close()
?
轉載于:https://www.cnblogs.com/gaobei/articles/8630643.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 吴恩达机器学习笔记(二) —— Logi
- 下一篇: 一个权重的物体拷贝权重给多个(oneWe