我正在使用一个对象做某事的Python库
do_something(my_object)
Run Code Online (Sandbox Code Playgroud)
并改变它.这样做时,它会向stdout打印一些统计信息,我想抓住这些信息.适当的解决方案是改变do_something()以返回相关信息,
out = do_something(my_object)
Run Code Online (Sandbox Code Playgroud)
但在开始讨论do_something()这个问题之前还需要一段时间.作为一种解决方法,我考虑解析do_something()对stdout的任何写入.
如何在代码中的两点之间捕获stdout输出,例如,
start_capturing()
do_something(my_object)
out = end_capturing()
Run Code Online (Sandbox Code Playgroud)
?
我能够重载该print函数并从内部调用正常函数吗?我想要做的是在我要print调用的特定行之后print调用普通行print并将副本写入文件.
另外我不知道怎么超载print.我不知道如何做变长参数.我很快就会查看,但是 重载打印python告诉我,我不能print在2.x中超载,这就是我正在使用的.
我在python中有一个函数,可以在标准输出中输出内容
def foo():
print("some text")
Run Code Online (Sandbox Code Playgroud)
我想将此函数中正在打印的文本"重定向"为变量,即"包装"此函数或其他任何内容,以便将文本存储在变量中:
text = wrapper(foo)
Run Code Online (Sandbox Code Playgroud)
有没有一种强大的方法来临时更改sys.stdout或打开变量作为一个FileObject或其他什么?