有没有可以替代Python中的StringIO
类,能够处理bytes
而不是字符串?
可能不太明显,但如果你使用StringIO来处理二进制数据,在Python 2.7或更新版本中将无法使用。
有没有可以替代Python中的StringIO
类,能够处理bytes
而不是字符串?
可能不太明显,但如果你使用StringIO来处理二进制数据,在Python 2.7或更新版本中将无法使用。
试试使用 io.BytesIO
。
io.BytesIO
对象中写入数据?我收到了TypeError: descriptor 'write' for '_io.BytesIO' objects doesn't apply to a 'bytes' object
的错误信息。 - JellicleCatio.StringIO
不同,它可以在Python 2.6以前的版本中使用:>>> import StringIO
>>> s=StringIO.StringIO()
>>> s.write('hello')
>>> s.getvalue()
'hello'
>>> import io
>>> s=io.StringIO()
>>> s.write('hello')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string argument expected, got 'str'
>>> s.write(u'hello')
5L
>>> s.getvalue()
u'hello'
C:\Users\John>\python26\python -c"import sys,StringIO;s=StringIO.StringIO();s.wr
ite('hello\n');print repr(s.getvalue()), sys.version"
'hello\n' 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]
C:\Users\John>\python27\python -c"import sys,StringIO;s=StringIO.StringIO();s.wr
ite('hello\n');print repr(s.getvalue()), sys.version"
'hello\n' 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]
io
模块中的BytesIO
类。如果您需要/想要支持2.7、2.6等版本以及3.x的单一代码库,那么您需要付出更多的努力。使用six模块应该会有很大帮助。