2

我有一个函数,它接受一个打开的文件对象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 类可以做同样的事情?
提前感谢您的任何建议
问候 Woltan

4

1 回答 1

1

作为io国家的文件:

由于该模块主要是为 Python 3.x 设计的,因此您必须注意,本文档中所有“bytes”的使用均指 str 类型(其中 bytes 是别名),“text”的所有使用均指到 unicode 类型。此外,这两种类型在 io API 中不可互换。

即,如果您使用向后移植的 Python 3 IO 库,则必须使用 unicode。然而,原来的StringIO类——它考虑字节(Python 2 字符串)文本并接受它们——仍然存在于 Python 2.7 中,只是不在 backported 中io。相反,它有自己的模块,也称为StringIO.

于 2011-05-31T14:37:13.633 回答