重定向后恢复std.out

时间:2017-09-26 08:39:25

标签: python ipython

在我的代码中的某个时刻,我将stdout重定向到一个文件:

sys.stdout = open(os.path.join(folder, file_env), 'w')

稍后,我想回到通常的IPython控制台(我在linux上使用Anaconda)

然而,如果我这样做

    sys.stdout = sys.__stdout__

控制台输出显示在shell中,spyder是根据需要启动而不是在iPython控制台中。 将它重定向到IPython控制台的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

在IPython中; sys.stdout sys.__stdout__

sys.stdout分配值时,请始终保存以前的版本:

oldstd = sys.stdout
sys.stdout = whatever
... your code. 
sys.stdout = oldstd

或者更好,让它成为上下文管理器。