如何在python中将sys.stdout重新附加到控制台窗口?

如何在python中将sys.stdout重新附加到控制台窗口?,python,io,stdout,stringio,redirectstandardoutput,Python,Io,Stdout,Stringio,Redirectstandardoutput,我的python 3涂鸦是这样的: import io, sys sys.stdout = io.StringIO() # no more responses to python terminal funnily enough 我的问题是如何重新连接,以便当我传入1+1时,它将返回控制台2 这是在windows 7 64位上运行的32位python上的python解释器中。您正在查找: 它还可用于将实际文件还原为已知的工作文件对象,以防它们被损坏的对象覆盖。但是,执行此操作的首选方法是在替换之

我的python 3涂鸦是这样的:

import io, sys
sys.stdout = io.StringIO()
# no more responses to python terminal funnily enough
我的问题是如何重新连接,以便当我传入
1+1
时,它将返回控制台
2

这是在windows 7 64位上运行的32位python上的python解释器中。

您正在查找:

它还可用于将实际文件还原为已知的工作文件对象,以防它们被损坏的对象覆盖。但是,执行此操作的首选方法是在替换之前显式保存上一个流,并还原保存的对象


我不确定您是如何接受输入的,但这将满足您的要求:

import io, sys

f = io.StringIO()
sys.stdout = f

while True:
    inp = input()
    if inp == "1+1":
        print(inp)
        break
sys.stdout = sys.__stdout__
print(eval(f.getvalue()))
或获取inp的最后一个值:

import io, sys

f = io.StringIO()
sys.stdout = io.StringIO()

while True:
    inp = input()
    if inp == "1+1":
        print(inp)
        break
sys.stdout = sys.__stdout__
print(eval(inp))
或在stdin上迭代:

import io, sys

sys.stdout = io.StringIO()
for line in sys.stdin:
    if line.strip() == "1+1":
        print(line)
        break
sys.stdout = sys.__stdout__
print(eval(line))

您在哪里/如何获取输入?我可以@AnandSKumar,但我正在试验stdout的工作方式,如果我要创建一个自定义文件,比如object,可能会将stdout重定向到该对象。@user1561108,您真的要存储所有输出吗?@padraickenningham只是一个学习练习。我要做的是通过将sys.stdout设置为类似对象的伪文件来抑制输出。到目前为止,我的类使用pass实现了flush和write,但当我将sys.stdout设置为它的一个实例时,我的应用程序在运行时抱怨它是对非类型对象的调用flush。