Bytes类型
Bytes类型
一、定义
bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型。
b'\xe5\xb0\x8f\xe7\x8c\xbf\xe5\x9c\x88'
'''
b开头的都代表是bytes类型,是以16进制来显示的,2个16进制代表一个字节。
utf-8是3个字节代表一个中文,所以以上正好是9个字节
'''
二、Bytes类型的作用
计算机只能存储2进制,要想将字符、图片、视频、音乐等存在硬盘上,也必须以正确的方式编码成2进制后再存储。
-
对于文字,我们可以用gbk编码,也可以用utf-8、ASCII编码。
-
对于图片,必须编码成PNG,JPEG等格式。
-
对于音乐,必须编码成MP3,WAV等。
在python中,数据转成2进制后不是直接以010101的形式表示的,而是用一种叫bytes(字节)的类型来表示的。字符串转成bytes后长成这个样子:
s = '小明'
a = s.encode('utf-8')
print(a)
在python中,字符串必须编码成bytes后才能存到硬盘上,但是为什么之前学的文件操作并没有把字符串编码后再存储?那是因为python默认帮你干了这个事了,如python3中文件存储的默认编码是utf-8。
当然,你可以自行改变文件的默认编码。
f = open(file="encode_test",encoding="gbk",mode="w")
这样,你写入的数据就是按gbk编码的了。
三、以二进制模式操作文件
当然,在打开文件时如果你不想让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进制模式打开文件的方式有:
- wb 二进制创建
- rb 二进制读
- ab 二进制追加