我正在调用一个函数并尝试捕获它打印出来的输出,但在3.3中我无法访问StringIO。还有另一种解决方法吗?
答案 0 :(得分:3)
在Python 3中,StringIO
位于io
包中。所以你仍然可以用它来捕获输出:
>>> def someMagicFunction ():
print('foo bar baz')
>>> import io, sys
>>> original = sys.stdout
>>> sys.stdout = new = io.StringIO()
>>> someMagicFunction()
>>> sys.stdout = original
>>> print(new.getvalue())
foo bar baz
答案 1 :(得分:0)
如何设置基本日志记录:
http://docs.python.org/3/library/logging.html
以下是基本教程链接:
http://docs.python.org/3/howto/logging.html#logging-basic-tutorial
答案 2 :(得分:0)
StringIO
已在Python 3中移动。请尝试from io import StringIO
。您还需要决定是否需要StringIO
或BytesIO
。
然而,听起来好像你正在尝试对sys.stdout
中的{{1}}进行单一测试。除非你确定需要,否则我不建议你在测试中这样做;它会使难以维护的测试成为可能。我建议您的代码需要重构 - 考虑更改函数以返回一个字符串,客户可以在闲暇时打印(或写入文件,或在GUI上显示,或......)。