bytes類型是指一堆字節的集合,在python中以b開頭的字符串都是bytes類型。python
b'\xe5\xb0\x8f\xe7\x8c\xbf\xe5\x9c\x88' ''' b開頭的都表明是bytes類型,是以16進制來顯示的,2個16進製表明一個字節。 utf-8是3個字節表明一箇中文,因此以上正好是9個字節 '''
計算機只能存儲2進制,要想將字符、圖片、視頻、音樂等存在硬盤上,也必須以正確的方式編碼成2進制後再存儲。編程
對於文字,咱們能夠用gbk編碼,也能夠用utf-八、ASCII編碼。編碼
對於圖片,必須編碼成PNG,JPEG等格式。code
對於音樂,必須編碼成MP3,WAV等。視頻
在python中,數據轉成2進制後不是直接以010101的形式表示的,而是用一種叫bytes(字節)的類型來表示的。字符串轉成bytes後長成這個樣子:對象
s = '小明' a = s.encode('utf-8') print(a)
在python中,字符串必須編碼成bytes後才能存到硬盤上,可是爲何以前學的文件操做並無把字符串編碼後再存儲?那是由於python默認幫你幹了這個事了,如python3中文件存儲的默認編碼是utf-8。blog
固然,你能夠自行改變文件的默認編碼。圖片
f = open(file="encode_test",encoding="gbk",mode="w")
這樣,你寫入的數據就是按gbk編碼的了。utf-8
固然,在打開文件時若是你不想讓open這個對象幫你自動編碼,你也能夠直接往文件裏存入bytes數據。字符串
f = open(file="encode_test",mode="wb") # wb以2進制模式打開文件 s = "自學編程,誰不上小猿圈".encode("utf-8") # 自行編碼 print(s ) f.write(s) f.close()
輸出結果:
b'\xe8\x87\xaa\xe5\xad\xa6\xe7\xbc\x96\xe7\xa8\x8b\xef\xbc\x8c\xe8\xb0\x81\xe4\xb8\x8d\xe4\xb8\x8a\xe5\xb0\x8f\xe7\x8c\xbf\xe5\x9c\x88'
以2進制模式打開文件的方式有: