python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...
很多同學對于編碼問題都不是很清楚,計算機常見的編碼格式為:
ASCII
ISO-8859-1
GB2312
GBK
UTF-8
UTF-16
對于Python開發(fā)中,我們一般都是采用統(tǒng)一的編碼格式:UTF-8
第一行加入環(huán)境申明:
#coding=utf-8
編碼操作方式一般都分為:編碼(encode)和解碼(decode) 但是對于今天我們所要講解的主角Python來說:
unicode和str兩種類型的相互轉換則為解碼和編碼。如下列子:
# coding = utf-8
# Python編碼問題
str = "您好"
print("輸出字符類型--->>>", type(str))
print(str)
# 采用 encode編碼
str1 = str.encode('gbk')
print("gbk--encode--輸出字符類型---->>>>", type(str1))
print(str1)
str2 = str1.decode('gbk')
print("-gbk----decode解碼--->>>", str2)
str3 = str.encode('utf-8')
print("utf-8---->>encode----->>>", str3)
str4 = str3.decode('utf-8')
print("utf-8---decode---->>>",str4)從列子中可以看出,不同的編碼格式的輸出的字符是不一樣的字符表達,我們在使用編碼和解碼的時候都需要采用同一種編碼格式進行兩者操作,否則就報錯。
pritn中文編碼問題
如下圖:
Python打印變量時,操作系統(tǒng)會對變量進行相應的處理,若變量是str類型,則操作系統(tǒng)直接發(fā)送到終端顯示,若變量是unicode類型,則操作系統(tǒng)會對變量用sys.stdout.encoding編碼對變量encode,若變量中含有sys.stdout.encoding未定義字符,則會出現(xiàn)UnicodeEncodeError。編碼后字節(jié)序列被發(fā)送給終端,假若終端設置的編碼和str編碼不一致,終端就會顯示出亂碼。
兩種錯誤情況:
1:UnicodeEncodeError
若變量中含有sys.stdout.encoding未定義字符則會出現(xiàn)如上錯誤。一般避此個錯誤的方式就是:
print("本地終端環(huán)境的默認編碼---->>>",sys.getdefaultencoding())首先打印出本地環(huán)境的編碼格式,然后在字符串編碼的時候就現(xiàn)在對應的編碼格式進行編碼和解碼。
a = '你好呀'
b = u'Python'
print("--->>>",a)
print('采用utf-8--->>',b.encode('utf-8'))接下來我們來從實例中看看,編碼和解碼的用法。
# 讀取txt 設置編碼格式 一定要加上encoding 也就是文件的打開的編碼格式 ,不加encoding則報錯。
f = open("D:imgstest.txt",encoding='utf-8')
s = f.read()
f.close()
print("--->>>",type(s))
print("---->>>", s)總結,Python3中編碼問題比Python2有了很多改善。
P3中的編碼我們只需要記住一點,打開讀取文件的時候一定要聲明編碼格式,開發(fā)編程前都提前設置好環(huán)境編碼,一般都是默認的utf-8格式,解碼和編碼都使用統(tǒng)一的編碼格式進行操作,這樣就能保存文件操作的時候不會出現(xiàn)編碼。
更多精彩請持續(xù)關注作者,點擊保存以下圖片,獲取更多資源和干貨。
http://weixin.qq.com/r/Dio1LZrEncfird5O938c (二維碼自動識別)
總結
以上是生活随笔為你收集整理的python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3 多线程_图解|为什么 P
- 下一篇: 有java基础的人学python_准备自