本文目录一览:
- 1、python3转成bytes其中bytes()与encode()有什么区别?
- 2、了解python中bytes,str和unicode的区别
- 3、python的bytes类型有什么用,什么情况下使用
- 4、Python文件处理里encoding和encode有事区别,bytes类型是什么意思?
- 5、python 字节流中的解析 b'B\x97\xc7\xae'?
python3转成bytes其中bytes()与encode()有什么区别?
就将str类型转换为Bytes类型这一过程的实质而言,没有区别.
硬要讲区别,大概就是语法上的区别了,一个是函数,一个是方法.
需要传递函数的时候,你不能使用方法.
需要调用方法的时候,你不能写成函数的形式.
了解python中bytes,str和unicode的区别
首先来说把Unicode转换为为原始8位值(二进制数据),有很多种办
编写Python程序的时候,核心部分应该用Unicode来写,也就是python3中的str,python2中的unicode
python3中2种表示字符序列的类型:bytes和str
前者的实例包含了原始8位值,后者的实例包含了Unicode字符
python3中接受bytes和str,并总是返回str:
def to_str(bytes_or_str):
if isinstance(bytes_or_str, bytes):
return bytes_or_str.decode('utf-8')
return bytes_or_str1234
python3中接受bytes和str,并总是返回bytes:
def to_bytes(bytes_or_str):
if isinstance(bytes_or_str, str):
return bytes_or_str.encode('utf-8')
return bytes_or_str1234
python2中2种表示字符序列的类型:unicode和str
与python3刚好相反:后者的实例包含了原始8位值,前者的实例包含了Unicode字符
python2中接受unicode和str,并总是返回unicode:
def to_str(bytes_or_str):
if isinstance(bytes_or_str, str):
return bytes_or_str.decode('utf-8')
return bytes_or_str1234
python2中接受unicode和str,并总是返回str:
def to_bytes(bytes_or_str):
if isinstance(bytes_or_str, unicode):
return bytes_or_str.encode('utf-8')
return bytes_or_str1234
python2和python3需要注意的事情
1.python2中如果str只包含7位的ASCII字符,那么unicode和str 就是同一种类型,可以+操作
2.python3内置的open函数获取文件句柄,默认采用utf-8的格式操作文件,python2则默认是二进制
python2 的写法:
with open("/temp/file.bin",'w')as f :
f.write(os.urandom(10))12
python3 的写法:
with open("/temp/file.bin",'wb')as f :
f.write(os.urandom(10))12
ps:如何让你的代码pythonic
python的bytes类型有什么用,什么情况下使用
当使用文本模式打开文件时,它返回一个TextIOBase的子类。
当使用二进制打开时,返回的是BufferedIOBase的子类。
准确细分为:可读二进制模式,返回BufferReader对象;在可写和追加模式中,返回BufferWriter对象,在读写模式中,返回BufferRandom。
当buffering关闭时,原始数据流,一个RawIOBase的子类将被返回。
Python文件处理里encoding和encode有事区别,bytes类型是什么意思?
python问题我来回答你。
首先你要知道的是,字符串在Python内部的表示是unicode(统一码、万国码)编码,很多编程语言都是这么设计的,各个国家通用编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。
因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码。
bytes类型是 Python 3.x版本新增的数据类型,在 Python 2.x 中是不存在的。字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的。
bytes 只负责以字节序列的形式(二进制形式)来存储数据,至于这些数据到底表示什么内容(字符串、数字、图片、音频等),完全由程序的解析方式决定。
说白了,bytes 只是简单地记录内存中的原始数据,至于如何使用这些数据,bytes 并不在意,你想怎么使用就怎么使用,bytes 并不约束你的行为。
bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes 也可以用来存储图片、音频、视频等二进制格式的文件。
举个例子:
b = b'' # 创建一个空的bytes
b = byte() # 创建一个空的bytes
b = b'hello' # 直接指定这个hello是bytes类型
b = bytes('string',encoding='编码类型') #利用内置bytes方法,将字符串转换为指定编码的bytes
b = str.encode('编码类型') # 利用字符串的encode方法编码成bytes,默认为utf-8类型
bytes.decode('编码类型'):将bytes对象解码成字符串,默认使用utf-8进行解码。
python 字节流中的解析 b'B\x97\xc7\xae'?
这是bytes 类型,是字节类型,不是float类型,简而言之可以理解为字符串