将函数输出打印的结果分配给Python变量

2024-04-27 03:36:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数(在某些项目中),它打印结果。何时我从命令行或在另一个python项目中调用它,它在终端上打印输出。但我想将所有打印结果存储在一个变量中,如下所示:

output = function_name(function_args)

我不想在终端上打印结果,而是将它们存储在output变量中。 同样,main函数返回一些我不想要的结果(只是一个数字作为状态)。在


Tags: 项目函数命令行name终端outputmain状态
2条回答

您可以通过重新绑定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。在

^{pr2}$

明智的解决方案简单明了:修复函数,使其返回正确的数据,而不是打印数据。否则,您可以使用wim发布的hack,但假设您掌握了求助于这种复杂解决方案的错误功能,则属于“WTF”类别。在

注意:当然,如果您不掌握函数的代码,或者它只是一个5分钟的一次性脚本,捕获sys.stdout是一个方便的备用方法。在

相关问题 更多 >