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

字元編碼和檔案操作

內容概要

  • 字元編碼
  • 檔案操作

字元編碼

  • 只跟文字檔案和字串有關,與視訊檔案圖片檔案等無關

  • 什麼是字元編碼
    由於計算機內部只識別二進位制,但是使用者在使用計算機的時候卻可以看到各式各樣的語言字元
    字元編碼:內部記錄了人類字元與數字對應關係的資料

  • 字元編碼發展史
    1.一家獨大
    計算機最初是由美國人發明的,為了能讓計算機識別英文字元
    ASCII碼:裡面記錄了英文字元與數字的對應關係
    用一個位元組來時對應關係
    所有的英文字元和符號加起來不超過127,使用8位是為了後面發現新的語言

    2.群雄割據
    為了能夠讓計算機識別中文,我們需要發明新的編碼表
    GBK碼:記錄了英文中文與數字的對應關係

    3.天下一統
    為了實現不同國家之間的文字資料能夠彼此無障礙交流需要對編碼同一
    unicode(萬國碼):同一使用兩個及以上字元記錄字元與數字的對應關係
    utf8(萬國碼的優化):英文還是一個位元組儲存,中文使用三個或更多位元組儲存
    現在預設使用的編碼是utf8

字元編碼實操

  • 如何解決檔案亂碼的情況
    檔案當初以什麼編碼編寫的,開啟的時候就用什麼編碼解

  • python直譯器不同版本帶來的編碼差異
    python2.x內部使用的預設編碼是ASCII
    檔案頭:coding:utf8
    在python2中定義字串前面要加一個小寫的u
    a = u'hahaha'
    python3內部預設使用utf8
    自定義檔案模板內容
    file>settings>Editor>flie and code templates>python script

  • 編碼與解碼
    編碼:將人類能夠讀懂的字元按照指定的編碼轉成數字
    解碼:將數字按照指定的編碼轉成人類能夠讀懂的字元
    s = '哈哈哈'
    res = s.encode('utf8') # 編碼
    print(res, type(res))
    res1 = res.decode('utf8') # 解碼
    print(res1, type(res1))

檔案操作

  • 什麼是檔案
    是作業系統暴露給使用者操作硬碟的介面

  • 程式碼如何操作檔案
    關鍵字 open()
    三步走:1.利用關鍵字open開啟檔案 2.利用其他方法操作檔案 3.關閉檔案
    檔案路徑:
    相對路徑與絕對路徑
    路徑中出現了字母與斜槓的產生了特殊意義如何取消
    在路徑字串前面加一個r
    r'D:\py\08\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() f2.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()) # 讀取檔案所有的內容

  • 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('hello')

  • a 只追加模式(追加能容)