1. 程式人生 > 其它 >Python基礎篇(8)---字元編碼和檔案操作

Python基礎篇(8)---字元編碼和檔案操作

本章內容

    •字元編碼

    •檔案的操作簡介

    •檔案的讀寫模式

    •檔案的操作模式

    •檔案的內建方法

字元編碼


人類在與計算機溝通交流,用的都是人類能讀懂的字元,而計算機只能識別二進位制數 所以由人類的字元到計算機中的能夠識別的二進位制數,需要經歷一個過程,這個過程就是字元編碼。

字元編碼中的編碼指的是翻譯或者轉換的意思,即將人能理解的字元翻譯成計算機能識別的數字。

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迴圈 :
一行行讀取檔案內容(推薦使用)  記憶體中同一時刻只會有一行內容
'''