Python基礎篇(8)---字元編碼和檔案操作
阿新 • • 發佈:2022-03-14
本章內容
•字元編碼
•檔案的操作簡介
•檔案的讀寫模式
•檔案的操作模式
•檔案的內建方法
字元編碼
人類在與計算機溝通交流,用的都是人類能讀懂的字元,而計算機只能識別二進位制數 所以由人類的字元到計算機中的能夠識別的二進位制數,需要經歷一個過程,這個過程就是字元編碼。
字元編碼中的編碼指的是翻譯或者轉換的意思,即將人能理解的字元翻譯成計算機能識別的數字。
1.編碼和解碼
編碼:將人類能夠讀懂的字元編碼成計算機能夠直接讀懂的字元。 解碼:將計算機能夠直接讀懂的字元解碼成人類能夠讀懂的字元。 # 編碼 encode a = '有志者事竟成' print(a.encode('gbk')) # 輸出 b'\xd3\xd0\xd6\xbe\xd5\xdf\xca\xc2\xbe\xb9\xb3\xc9' """ 字串前面如果加了字母b 表示該資料型別為 bytes型別 bytes型別可以看成是二進位制 """ # 解碼 decode res =b'\xd3\xd0\xd6\xbe\xd5\xdf\xca\xc2\xbe\xb9\xb3\xc9 print(res.decode('gbk')) # 輸出 有志者事竟成 """ 基於網路傳輸資料 資料都必須是二進位制格式 所以肯定涉及到編碼與解碼 """
2.解決亂碼問題
# 資料當初以什麼編碼編的就以什麼編碼解即可 res1 = s1.encode('gbk') print(res1) # 編碼 res2 = res1.decode('euc_kr') print(res2) # 亂碼 res3 = res1.decode('gbk') print(res3) # 正常顯示
3.python直譯器層面
# python2.X內部使用的編碼預設是ASCII # 檔案頭 coding:utf8 -*- coding:utf8 -*- 美化寫法# 在python2中定義字串前面要加一個小u s = u'你' # python3.X預設使用utf8
檔案的操作簡介
1.什麼是檔案?
檔案其實是作業系統暴露給使用者操作硬碟的快捷方式。
2.程式碼操作檔案的流程
1.開啟檔案、建立檔案 2.編輯檔案內容 3.儲存檔案內容 4.關閉檔案 """ 檔案路徑:相對路徑與絕對路徑 路徑中出現了字母與斜槓的組合產生了特殊含義如何取消 在路徑字串前面加一個r r'D:\python\a.txt' """ #1.使用關鍵字開啟檔案 open(r'a.txt') # 相對路徑 open(r'D:\py1\day09\a.txt') # 絕對路徑 res = open(r'a.txt', 'r', encoding='utf8') # 2.讀取檔案內容 print(res.read()) # 3 關閉檔案 res.close() """上述操作open完最後都需要執行close 而close這一行很任意被遺忘""" # with上下文管理 with open(r'a.txt', 'r', encoding='utf8') as f: # f = open() data = f.read() print(data)
r read 只讀模式:只能讀不能寫
w write 只寫模式:只能寫不能讀
a append 只追加模式:在檔案末尾新增內容
r模式
r模式 只能看不能改 路徑不存在會直接報錯 # 路徑存在 with open(r'a.txt', 'r', encoding='utf8') as f: # print(f.read()) # 讀取檔案內所有的內容 f.write('啊啊啊啊 啊啊啊') # 報錯 """ able在英語中大部分情況下表示的是 具備...的能力 readable 具備讀的能力 writable 具備寫的能力 """
w模式
# w模式 只能寫不能看 路徑不存在則自動建立檔案 # 路徑存在: with open(r'a.txt', 'w', encoding='utf8') as f1: f1.write('第一行文字\n') # 寫入檔案內容 f1.write('第二槓文字\r') # 寫入檔案內容 f1.write('第三行文字\n') # 寫入檔案內容 print(f1.read()) """ w模式需要注意的是寫入資料,先清空檔案內容 之後再寫入資料
為了節省空間支援一個字元 根據作業系統的不同可能有所區別 \n 、 \r """
a模式
# a模式和w模式差不多,區別在於a模式是在末尾新增文字且不會清空原資料 # 路徑不存在:自動建立檔案 # 路徑存在:不會清空檔案內容 而是在檔案末尾等待新內容的新增 with open(r'a.txt', 'a', encoding='utf8') as f: f.write('鵝鵝鵝餓') print(f.read())
檔案的操作模式
t模式
t就是文字模式 是預設的模式r,w,a。t被省略了,完整的寫的話應該是'rt'、'wt'、'at'。 注意事項: 1.該模式只能操作文字檔案 2.該模式必須要指定encoding引數 3.該模式讀寫都是以字串為最小單位
b模式
b模式是二進位制模式 可以操作任意型別的檔案,rb,wb,ab 他們的b不能省略 注意事項: 1.該模式可以操作任意型別的檔案 2.該模式不需要指定encoding引數 3.該模式讀寫都是以bytes型別為最小單位
檔案的內建方法
之前我們學習了基本資料型別的內建方法,檔案也是有內建方法的。
read() # 一次性讀取檔案內容 # 1.執行完之後游標在檔案末尾 繼續讀取沒有內容 # 2.當檔案內容特別大的時候 容易造成記憶體溢位(滿了) readline() # 一次只讀一行內容 readlines() # 結果是一個列表 裡面的各個元素是檔案的一行行內容 readable() # 判斷當前檔案是否可讀 write() # 寫入檔案內容(字串或者bytes型別) writelines() # 可以將列表中多個元素寫入檔案 writable() # 判斷檔案是否可寫 flush() # 相當於主動按了ctrl+s(儲存) ''' 檔案還支援for迴圈 : 一行行讀取檔案內容(推薦使用) 記憶體中同一時刻只會有一行內容 '''