我有一个函数,它接受一个打开的文件对象file
并像这样写入数据:
def Write(self, file):
file.write("Data")
现在我想测试一下这个函数,我认为用某种不将数据写入文件的流来做这件事是很好的。除了StringIO类之外,我找不到能完成这项工作的Python2.7类。但是,在Python2.7中,此类需要write函数中的unicode字符串。 (file.write(u"Data"))
所以我无法使用Write
类测试StringIO
函数
在我的解决方法中,我创建了一个小型的虚拟课程
class MyStream(object):
S = property(lambda self: self._S)
def __init__(self):
self._S = ""
def write(self, s):
self._S += s
我现在可以成功测试我的Write
功能。
我的问题:
是否有一个原生的python类可以做同样的伎俩?
Thx提前提出任何建议
关心沃尔坦
答案 0 :(得分:1)
正如io
所述的文件:
由于此模块主要是为Python 3.x设计的,因此您必须注意本文档中“bytes”的所有用法都是指str类型(其中bytes是别名),以及所有使用“ text“指的是unicode类型。此外,这两种类型在io API中不可互换。
即。如果您使用backported Python 3 IO库,则必须使用unicode。但是,原始的StringIO
类 - 它考虑了字节(Python 2字符串)文本并接受它们 - 仍然存在于Python 2.7中,它只是不在反向移植的io
中。相反,它有自己的模块,也称为StringIO
。