我的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解释器。
答案 0 :(得分:3)
您正在寻找sys.__stdout__
:
它还可以用于将实际文件还原到已知的工作文件对象,以防它们被破坏的对象覆盖。但是,执行此操作的首选方法是在替换之前显式保存上一个流,并还原已保存的对象。
答案 1 :(得分:1)
我不确定你是如何接受输入的,但这会做你想做的事情:
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))