第六章 初始檔案
阿新 • • 發佈:2021-11-10
目錄
瞭解Debug除錯
1.先使用滑鼠左鍵在需要除錯的程式碼左邊點選一下(會出現一個紅點)
2.之後右鍵點選debug執行程式碼
字元編碼
# 只跟文字和字串有關 與視訊音訊無關。
# 1.什麼是字元編碼
由計算機內部識別二進位制 但是使用者在使用計算機的時候可以看到各式各樣的語言字元
字元編碼:內部記錄來人類字元與數字對應關係的資料
字元編碼發展史
# 1.一家獨大 漂亮國發明瞭計算機 漂亮國的人為了能讓計算機識別英文字元 ASCII碼:裡面記錄了英文字元與數字的對應關係 ''' 所有的英文字元和符號加起來其實不超過127 ''' 必須記住的隊友關係 A-Z: 65-90 a-z: 97-122 # 2.群雄割據 中國人 為了能夠讓計算機識別中文,發明另外一套編碼表 GBK:記錄了英文中文與數字的對應關係 對於英文還是使用一個位元組 對應中文使用連個位元組甚至更多'''生僻字''' 日子過得不錯國 一樣 發明了自己的一套編碼表 shift_JIS碼: 日文英文對應關係 世界國 一樣 Euc_kr碼:記錄韓英對應關係 # 3.天下一統 為了實現不同國家質檢的文字資料能夠彼此無障礙交流需要對編碼統一 Unicode(萬國碼) 1994 統一使用兩個字元記錄字元與數字的對應關係 轉換速度有缺陷 utf8(萬國的優化版本) 將英文還是用一個位元組儲存 將中文使用三個位元組或更多位元組儲存 '''預設utf8'''
字元編碼實操
1. 如何解決檔案亂碼的情況 檔案當初以什麼編碼編的 開啟的時候就以是什麼編碼解 2. python直譯器版本不同帶來的編碼差異 python2.x內部使用的編碼預設是ASCII # 檔案頭 coding:utf8 在python2中定義字串前面加一個小u s = u'你' """ 自定義檔案模板內容 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, type(res1))
檔案操作
1.什麼是檔案? 檔案其實是作業系統暴露給使用者操作硬碟的快捷方式(介面) 2.程式碼如何操作檔案 關鍵字open() 三步走: 1.利用光健字open開啟文就按 2.利用其它方法操作檔案 3.關閉檔案 ''' 檔案路勁 相對路勁與絕對路勁 路勁中出現了字母與斜槓的組合產生了特殊含義如何取消 在路徑字串前面加一個 r r'D:\pyt.hc\day08\a.txt' ''' # open('a.txt') # 開啟相對路徑 # open(r'D:\pyt.hc\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語法"""
檔案的讀寫
"""
補全語法結構 沒有實際含義
pass
...
"""
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()) # 讀取檔案內所有的內容
# f.write('123') # 寫檔案內容
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.read()
f.write('hello world!\n')
f.write('hello world!\n')
f.write('hello world!\n')
a 只追加模式(追加內容)