【问题标题】:Storing Python output in a string [duplicate]将Python输出存储在字符串中[重复]
【发布时间】:2016-05-24 20:23:16
【问题描述】:

我使用eval(),我需要打印输出。例如,eval('1+1') 将返回 2,但 eval('print('hello')') 将返回 None。如何存储 Python Shell 的输出?

【问题讨论】:

  • 你为什么使用eva()l?你得到None,因为print()没有返回值,因此它的计算结果为None。你想做什么?
  • @TessellatingHeckler eval 和外部命令不相关。
  • 这是经典的XY Problem。如果您找到解决您面临的问题的正确方法而不是使用eval(),您将不会有这个新问题需要解决。您能告诉我们您要解决的最初问题吗?
  • 我想创建一个类似于 python shell 的电报机器人。我知道 print() 不返回任何内容,所以我问如何存储所有 python shell 输出,就好像我在终端中编写 print() 一样。

标签: python python-3.x eval


【解决方案1】:

如果你真的想将标准输出重定向到一个变量,使用 StringIO 作为一个变量或使用一个文件

from io import StringIO
# from StringIO import StringIO -- python 2.x
import sys
my_out = StringIO()
sys.stdout = my_out
print("hello") # now stored in my_out

my_file = open('my_file.txt', 'w')
sys.stdout = my_file
print("hello") # now written to my_file.txt

【讨论】:

  • 这是正确的,但缺少很多。我链接的副本有更详尽的答案。
  • 没有名为“StringIO”的模块有什么想法吗?
  • 是否可以读取 sys.stdout?因为如果是这样,我的问题就解决了。
  • @adamkatav 抱歉为 3.x 更新
猜你喜欢
  • 2011-01-30
  • 2015-01-26
  • 1970-01-01
  • 2017-10-07
  • 2014-05-06
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 2013-05-02
相关资源
最近更新 更多