Byets类型
数据存储硬盘,硬盘只能存储二进制
二进制--十进制--ascii/gkb/utf8/ unicode
数据存硬盘,就要以响应编码utf-8/gbk转成二进制
文字 utf-8--二进制
s="曹娜" #在py3中是unicode格式,在py2是ascii码格式,现在是存在内存中,往硬盘存二进制,要编码成gbk/utf8的二进制,编码语法encode,就是把unicode的字符,以gbk/utf-8编码成二进制
print(s.encode("utf-8"))
打印结果-----》b'\xe6\x9b\xb9\xe5\xa8\x9c'---utf-8 1个字符3个字节
bytes类型,3个字节一个中文字符,2个中文,就是6个字节,所以是6个字节--》曹娜--其实就是二进制,不过是以十六进制形式表现出来
print(s.encode("gbk"))
b'\xb2\xdc\xc4\xc8' -----gbk,1个字符2个字节
bytes以十六进制形式表示,2个十六进制数构成1个byte,以b""来表示,字节串
在py3,文件默认编码utf-8
f=open("test2.txt","w",encoding="gbk")# 自己指定编码,默认utf-8,指定后按照指定编码存储,但是pycharm是以utf-8读取的,需要修改下
f.write("你好啊")
f.close()
f=open("test.txt","w")
f.write("你好啊".encode("utf-8"))
f.close()
#报错 ----》》》TypeError: write() argument must be str, not bytes,因为write的内容,已经是编码后的二进制,所以,要以"wb"写入,以告知系统,我要以2进制形式写入。二进制模式,不要在指定encoding
w模式是存字符串,后面要encoding="编码格式"
wb模式是二进制格式写入,不要encoding="编码格式"
f=open("test1.txt","r")
print(f.readline())
f.close()
字符串形式读取
f=open("test1.txt","rb")
print(f.readline())
f.close()
bytes类型读取
2个应用场景
字符存硬盘字符要转换bytes
网络传输字符要转换bytes
图片 jpg--二进制
音乐 mp3--二进制
视频 mp4--二进制