2024-04-27 03:36:06 发布
网友
我有一个函数(在某些项目中),它打印结果。何时我从命令行或在另一个python项目中调用它,它在终端上打印输出。但我想将所有打印结果存储在一个变量中,如下所示:
output = function_name(function_args)
我不想在终端上打印结果,而是将它们存储在output变量中。 同样,main函数返回一些我不想要的结果(只是一个数字作为状态)。在
output
您可以通过重新绑定sys.stdout来完成此操作:
sys.stdout
>>> def foo(): ... print('potato') ... >>> import sys, io >>> sys.stdout = io.StringIO() >>> foo() >>> val = sys.stdout.getvalue() >>> sys.stdout = sys.__stdout__ # restores original stdout >>> print(val) potato
为了获得更好的方法,可以考虑编写一个上下文管理器。如果您使用的是python3.4+,它是already been written for you。在
明智的解决方案简单明了:修复函数,使其返回正确的数据,而不是打印数据。否则,您可以使用wim发布的hack,但假设您掌握了求助于这种复杂解决方案的错误功能,则属于“WTF”类别。在
注意:当然,如果您不掌握函数的代码,或者它只是一个5分钟的一次性脚本,捕获sys.stdout是一个方便的备用方法。在
您可以通过重新绑定
sys.stdout
来完成此操作:为了获得更好的方法,可以考虑编写一个上下文管理器。如果您使用的是python3.4+,它是already been written for you。在
^{pr2}$明智的解决方案简单明了:修复函数,使其返回正确的数据,而不是打印数据。否则,您可以使用wim发布的hack,但假设您掌握了求助于这种复杂解决方案的错误功能,则属于“WTF”类别。在
注意:当然,如果您不掌握函数的代码,或者它只是一个5分钟的一次性脚本,捕获
sys.stdout
是一个方便的备用方法。在相关问题 更多 >
编程相关推荐