Python的io.BytesIO.getvalue()返回str而不是bytes正常吗?

22 投票
2 回答
36489 浏览
提问于 2025-04-16 20:16

Python中的io.BytesIO.getvalue()方法返回字符串而不是字节,这正常吗?

 Python 2.7.1 (r271:86832, Jun 13 2011, 14:28:51) 
 >>> import io
 >>> a = io.BytesIO()
 >>> a
 <_io.BytesIO object at 0x10f9453b0>
 >>> a.getvalue()
 ''
 >>> print type(a.getvalue())
 <type 'str'>
 >>> 

我应该提交一个bug报告吗?

2 个回答

4

在Python 2.X中,bytes并不是一种独立的数据结构,所以这完全正常。在Python 2中,str就是字节串(bytestrings),而在Python 3中,str则是Unicode字符串。

22

不,这不是一个错误。这是正常的表现。你可以看看这个回答:Python 2.7中的bytes类型和PEP-358

简单来说,Python 2.7中的bytes其实就是str的一个别名,目的是为了让大家更容易过渡到3.x版本。

撰写回答