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