Python字元編碼和檔案操作
一.字元編碼
1.1 字元編碼
計算機內部只識別二進位制,但是使用者在使用計算機的時候卻可以看到格式各樣的語言字元,字元編碼記錄了人類字元與數字對應關係的資料。字元編碼只和文字檔案和字串有關 與視訊檔案 圖片無關無關。
2.2 字元編碼的發展史
2.2.1 一家獨大
計算機最初是由美國人發明的,美國人為了能夠讓計算機識別英文字元
ASCII碼:裡面記錄了英文字元與數字的關係,這套編碼表所有的英文和符號加起來其實不超過127,之所以使用八位是為了後面發現新的語言。
2.2.2 群雄割據
中國
當計算機進入中國後中國人為了能讓計算機識別中文,發明了另外一套編碼表,GBK碼錶,記錄了英文中文與數字的對應關係,對於英文還是使用一個位元組,對於中文使用兩個位元組甚至更多位元組。
日本
為了能夠讓計算機識別日文,也需要發明一套編碼表。
shift_jis碼:記錄了日文 英文 數字的對應關係。
韓國人
為了能讓計算機識別韓文 也需要發明一套編碼表。
Euc_kr碼:記錄了韓文 英文日文 數字的對應關係。
2.2.3 分久必合
為了能夠實現不同國家之間的文字資料能夠彼此無障礙交流,那就必須讓編碼進行一個個統一,即Unicode。它統一使用兩個及以上字元記錄與數字的對應關係。其中utf-8是其的優化版本。英文還是用一個個位元組儲存,中文使用三個位元組或更多位元組儲存。
二.字串編碼方法
1.如何解決檔案亂碼的情況
檔案當初以什麼編碼的,開啟的時候就以什麼編碼解
2.Python直譯器版本不同帶來的編碼差異
Python2.x 內部使用編碼預設是ASCII
Python3.x內部使用的是utf-8
# 在使用Python2.x 直譯器的時候字串前面要加一個小u s=u'helloWord'
每天一個小技巧:
自定義檔案模組內容:
file>>>settings>>>editor>>>file and code templates>>python script
3.編碼與解碼
編碼 將人類能夠讀懂的字元按照指定的編碼轉換成計算機能讀懂的二進位制。
解碼 將二進位制數轉換成人類能夠讀懂的文字,圖片和字元。
1 s = '小張是大帥哥' 2 # 編碼encode 3 res = s.encode('utf8') 4 print(res) 5 r1 = res.decode() 6 print(r1)
三.檔案的操作
3.1 什麼是檔案
檔案其實就是作業系統暴露給使用者操作硬碟的“介面”。
3.2 程式碼如何操作檔案
關鍵字 open
3.3 檔案路徑
相對路徑與絕對路徑,路徑中出現了字母與斜槓的組合產生特殊含義如何取消,在路徑前面加一個r。
3.4 步驟方法
1 # 開啟檔案 2 open('jason.txt') 3 open(r'd:\python\09\a.txt')
# with上下文管理(能夠自動幫你close()) with open(r'a.txt','r',encoding='utf8') as f1: # f1=open() f1.close() print(f1.read())
3.5 檔案讀寫模式
1 # r 只讀模式 2 # 路徑不存在直接報錯 3 with open(r'b.txt', 'r', encoding='utf-8') as f: 4 print(f.read()) 5 # w 只寫模式 6 # 路徑不存在直接報錯 7 with open(r'b.txt', 'w', encoding='utf-8') as j: 8 j.write('只寫模式') 9 # a 只追加模式(追加內容) 10 with open(r'b.txt','a',encoding='utf-8') as l: 11 l.write('123')