什么是字符編碼
由於計算機內部只識別二進制 但是用戶在使用計算機的時候卻可以看到各式各樣的語言字符
字符編碼:內部記錄了人類字符與數字對應關系的數據
用一個字節來是對應關系 """所有的英文字符和符號加起來其實不超過127之所以使用八位是為了后續發現新的語言"""
只跟文本文件和字符串有關 與視頻文件 圖片文件等無關
字符碼發展史
1.一家獨大
計算機最初是由美國人發明的 美國人為了能夠讓計算機識別英文字符
ASCII碼:里面記錄了英文字符與數字的對應關系

2.群雄割據
中國人:為了能夠讓計算機識別中文 我們需要發明另外一套編碼表
GBK碼:記錄了英文中文與數字的對應關系
對於英文還是使用一個字節 對應中文使用兩個字節甚至更多字節 """兩個字節其實也不夠表示出所有的中文遇到生僻字可能需要更多位來表示"""

日本人:為了能夠讓計算機識別日文 也需要發明一套編碼表
shift_JIS碼:記錄了日文英文與數字的對應關系

韓國人:為了能夠讓計算機識別韓文 也需要發明一套編碼表
Euc_kr碼:記錄了韓文英文與數字的對應關系

3.天下一統
為了能夠實現不同國家之間的文本數據能夠彼此無障礙交流需要對編碼統一unicode(萬國碼) 統一使用兩個及以上字符記錄字符與數字的對應關系

utf8(萬國碼的優化版本)將英文還是用一個字節存儲將中文使用三個字節或更多字節存儲(現在默認使用的編碼是utf8)

字符編碼實操
1.如何解決文件亂碼的情況
文件當初以什么編碼編的 打開的時候就以什么編碼解
2.python解釋器版本不同帶來的編碼差異
python2.X內部使用的編碼默認是ASCII
文件頭:coding:utf8
在python2中定義字符串前面要加一個小u
s = u'你'
python3.X內部使用utf8
"""
自定義文件模板內容
file
settings
Editor
file and code templates
python script
"""
3.編碼與解碼
編碼:將人類能夠讀懂的字符安裝指定的編碼轉換成數字
解碼:將數字按照指定的編碼轉換成人類能夠讀懂的字符
s = '每天不要想太多 學就完事了 干就完了 奧利給!!!'
編碼
res = s.encode('utf8')
print(res, type(res))
文件操作解碼
res1 = res.decode('utf8')
print(res1)

文件操作
1.什么是文件?
文件其實是操作系統暴露給用戶操作硬盤的快捷方式(接口)
2.代碼如何操作文件
關鍵字open()
三步走:
1.利用關鍵字open打開文件
2.利用其它方法操作文件
3.關閉文件
"""
文件路徑
相對路徑與絕對路徑
路徑中出現了字母與斜杠的組合產生了特殊含義如何取消
在路徑字符串前面加一個r
r'D:\py20\day08\a.txt'
"""
"""
文件路徑
相對路徑與絕對路徑
路徑中出現了字母與斜杠的組合產生了特殊含義如何取消
在路徑字符串前面加一個r
r'D:\py20\day08\a.txt'
"""
open('a.txt')
open(r'D:\py20\day08\a.txt') res = open('a.txt', 'r', encoding='utf8')
print(res.read())
res.close() # 關閉文件釋放資源
"""
open(文件路徑,讀寫模式,字符編碼)
文件路徑與讀寫模式是必須的
字符編碼是可選的(有些模式需要編碼)
"""
with上下文管理(能夠自動幫你close())
with open(r'a.txt','r',encoding='utf8') as f1: # f1=open() f1.close()
print(f1.read())
"""以后代碼操作文件 推薦使用with語法"""
文件讀寫模式
r 只讀模式(只能看不能改)
路徑不存在:直接報錯
with open(r'b.txt', 'r', encoding='utf8') as f:
pass

路徑存在
with open(r'a.txt', 'r', encoding='utf8') as f:
print(f.read())

with open(r'a.txt', 'r', encoding='utf8') as f:
f.write('123132')

w 只寫模式(只能寫不能看)
路徑不存在:路徑不存在自動創建
with open(r'b.txt', 'w', encoding='utf8') as f:
pass
路徑存在:1.會先清空文件內容 2.再執行寫入操作
with open(r'a.txt', 'w', encoding='utf8') as f:
f.write('123132\n')
f.write('hello wold\n')
f.write('fhsjh')


a 只追加模式(追加內容)
with open(r'a.txt', 'a', encoding='utf8') as f:
f.write('123132\n')
f.write('hello wold\n')
f.write('fhsjh')

