1. 程式人生 > 其它 >字元編碼與檔案操作

字元編碼與檔案操作

字元編碼與檔案操作

1.pycharm下的debug模式

1.11 先用滑鼠左鍵在需要除錯的程式碼左側點選一下(出現一個紅點)
1.2 之後右鍵點選debug執行程式碼
1.3 在debug執行視窗有分佈執行,也有跳過選中程式碼塊執行操作

2.字元編碼

2.1字元編碼含義

'''
由於計算機只能夠識別二進位制的數,但使用者在使用計算機的時候,
計算機呈現給使用者的卻是各式各樣的語言
而字元編碼就是內部記錄了人類語言和數字對應關係的資料
'''

2.2字元編碼發展史

# 2.2.1 一家獨大
'''計算機最初是由美國人發明的 美國人為了能夠讓計算機識別英文字元,發明了一種字元編碼
也即是最早的字元編碼表,ASCII碼
ASCII碼:內部記錄了英文字元與數字之間的對應關係,用一個位元組來表示對應關係
'''
'''所有的英文字母和符號加起來不超過,127,而ASCII編碼表內可以存放255個字元
目的是為了後續發現新的語言
'''
# ASCII碼錶中必須記住的對應關係
    A-Z: 65-90
    a-z;97-122
    0-9:48-57
# 2.2.2 群雄割據
# 中國字元編碼表:GBK:記錄了中英文與數字的對應關係
# 對於英文還是使用一個位元組
# 對應中文使用兩個或者更多位元組來表示(由於中國文化博大精深,存在很多生僻字)
# 日本字元編碼表:shift_jis:記錄了日文英文與數字的對應關係
# 韓國字元編碼表:EUC_KR: 記錄了韓文英文與數字的對應關係
# 2.2.3 天下一統
'''為了能夠實現不同國家之間的文字資料能夠彼此之間實現無障礙溝通交流需要對編碼進行統一
    因此出現了新的字元編碼表unicode又叫萬國碼
    unicode統一使用兩個及以上字元記錄字元與數字的關係,但是由於所有的字元都採用兩個字元記錄,在儲存資料的時候,
    不同的字元檔案所佔的空間都按照這個標準,儲存空間就會出現不合理的情況
    於是出現了utf8(優化後的萬國碼)
    utf8規定:英文還是用一個位元組儲存,中文用三個或以多位元組儲存
    現在預設使用的編碼是utf8
    '''

2.3字元編碼實操

# 2.3.1 如何解決檔案亂碼的情況
    # 檔案當初是以什麼編碼編的,開啟的時候就用什麼編碼解
# 2.3.2 python直譯器版本不同帶來的編碼差異
    python2.x內部使用的編碼預設是ASCII碼
        如何解決不同版本的python直譯器都能正常執行
        檔案頭部加上# coding:uft8(-*- coding:utf8-*-)告訴直譯器當前編碼是用utf8
        在python2.x中定義字串前面要加一個小u
            eg: s =u'你'
    python3.x內部使用utf8
    '''
    自定義檔案模板內容
	file
		settings
			Editor
				file and code templates
					python script
    '''
# 2.3.3 編碼與解碼
    # 編碼
        將人類能讀懂的字元按照指定的編碼轉換成數字
    # 解碼
        將數字按照指定的編碼轉換成人類能夠讀懂的字元
    eg:s = '每天不要想太多 學就完事了 幹就完了 奧利給!!!'
    編碼
    res = s.encode('utf8')
    print(res, type(res))  # bytes  在python中直接將該型別看成二進位制資料即可
    解碼
    res1 = res.decode('utf8')
    print(res1)

3.檔案操作

3.1 檔案的定義

    檔案其實就是作業系統暴露給使用者簡便操作硬碟的快捷方式(介面)

3.2程式碼如何操作檔案

 # 關鍵字 
 open()
 # 操作檔案的三個步驟
     1.利用關鍵字open開啟檔案
     2.利用其它操作方法操作檔案
     3.關閉檔案
'''
檔案路徑
	相對路徑與絕對路徑
	相對路徑:open('a.txt')  # 在當前資料夾下
	絕對路徑:open(r'D:\py20\day08\a.txt')  # 不在當前資料夾下
	路徑中出現了字母與斜槓的組合產生了特殊含義如何取消
		在路徑字串前面加一個r
			r'D:\py20\day08\a.txt'
'''

'''
open()開啟檔案括號內參數解釋
open(檔案路徑,操作檔案的模式,字元編碼型別)
檔案路徑和操作檔案的模式是必須的,不寫預設為r
字元編碼不寫預設為直譯器預設編碼
'''
# with語法,上下文管理(在操作完成以後自動關閉檔案)
# 語法 
with open() as f:  # f = open()
     print(f.read)
# 在操作檔案時,推薦使用with,或者每次在對檔案操作完成以後記得把檔案關閉
    # 檔案關閉方法 
    close

3.3檔案操作模式

'''
補全語法結構但是本身沒有實際含義的有
pass、...
'''
# 3.3.1 只讀模式(只能看不能寫)
# 關鍵字 'r'
# 1. 路徑不存在時,直接報錯
 with open(r'a.txt', 'r', encoding='UTF-8') as f:
     pass
# 2. 路徑存在時,會返回檔案裡的內容
 with open(r'a.txt', 'r', encoding='UTF- 8') as f:
     print(f.read())  # 讀取檔案內所有的內容
# 3.3.2 只寫模式(只能寫不能看)
# 關鍵字 w
# 1. 路徑不存在時,自動建立新檔案
     with open(r'a.txt', 'w', encoding='UTF-8') as f:
             pass  #  建立一個新檔案
# 2. 路徑存在時: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')