Python3 中codecs進行檔案的讀取

2021-09-07 07:39:19 字數 1434 閱讀 1802

編碼(動詞):按照某種規則(這個規則稱為:編碼(名詞))將「文字」轉換為「位元組流」。而在python 3中則表示:unicode變成str

解碼(動詞):將「位元組流」按照某種規則轉換成「文字」。而在python3中則表示:str變成unicode

字串在python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

在新版本的python3中,取消了unicode型別,代替它的是使用unicode字元的字串型別(str),字串型別(str)成為基礎型別如下所示,而編碼後的變為了位元組型別(bytes)但是兩個函式的使用方法不變:

decode              encode

bytes ------> str(unicode)------>bytes

u = '中文' #指定字串型別物件u 

str = u.encode('gb2312') #以gb2312編碼對u進行編碼,獲得bytes型別物件str

u1 = str.decode('gb2312')#以gb2312編碼對字串str進行解碼,獲得字串型別物件u1

u2 = str.decode('utf-8')#如果以utf-8的編碼對str進行解碼得到的結果,將無法還原原來的字串內容

f = open('test.txt','r')

s = f.read() #讀取檔案內容,如果是不識別的encoding格式(識別的encoding型別跟使用的系統有關),這裡將讀取失敗

'''假設檔案儲存時以gb2312編碼儲存'''

u = s.decode('gb2312') #以檔案儲存格式對內容進行解碼,獲得unicode字串

'''下面我們就可以對內容進行各種編碼的轉換了'''

str = u.encode('utf-8')#轉換為utf-8編碼的字串str

str1 = u.encode('gbk')#轉換為gbk編碼的字串str1

str1 = u.encode('utf-16')#轉換為utf-16編碼的字串str1

python給我們提供了乙個包codecs進行檔案的讀取,這個包中的open()函式可以指定編碼的型別:

import codecs 

f = codecs.open('text.text','r+',encoding='utf-8')#必須事先知道檔案的編碼格式,這裡檔案編碼是使用的utf-8

content = f.read()#如果open時使用的encoding和檔案本身的encoding不一致的話,那麼這裡將將會產生錯誤

f.write('你想要寫入的資訊')

f.close()

python3中codecs模組的使用

前言 對檔案進行操作過程中,會遇到檔案編碼格式的情況,這時候,codecs模組能很好的解決相關問題 示例 讀取文字內容 def readalertfile 從檔案中讀取已發往釘釘上的資訊 return if alertfile.is file with codecs.open alertfile,r...

python3實現windows下同名程序監控

公司老版的svn伺服器的svn服務經常意外關閉,需要寫個簡單的監控指令碼監控一下 首先多個svn服務使用不同的埠,使用wmic命令檢視所有svn程序占用的埠以此來判斷目標服務是否存活,wimc命令如下 wmic process where caption svn.exe get commandlin...

python3中異常處理 Python3異常處理

python的異常處理機制 使用 try.except 捕獲異常 try 業務實現 except error1,error2,as e 出現異常後的處理 異常類的繼承關係 baseexception systemexit keyboardinterrupt generatorexit excepti...