正如我们所知,当涉及到Python语言的版本2.x和版本3.x时,str
类型具有不同的含义。不幸的是,许多框架和API希望与它一起工作,而忽略了含义和行为的变化。例如logging
框架和WSGI
API。当logging.StreamHandler
写入流时,它会写入str
,而不是bytes
,也不会写入unicode
。
非选项:
-
StringIO.StringIO
:在 Python 3.x 中不可用 -
io.BytesIO
:当Python 3.x向其写入str
(即Unicode)时失败 -
io.StringIO
:当Python 2.x写入str
时失败(即bytes
) 到它
那么如何获得一个StringIO
类对象,可以与str
一起使用呢?
six
库有一个可能适合您的 StringIO 类,描述如下:
Python 2 和 io 中 StringIO.StringIO 的别名。Python 3 中的 StringIO
。