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进制模式打开文件的方式有: