我知道如何将打印重定向到文件。
import sys
orig_stdout = sys.stdout
f = file('out.txt', 'w')
sys.stdout = f
for i in range(2):
print ('i = ', i)
sys.stdout = orig_stdout
f.close()
我也需要这样做,但不需要文件:将打印输出保存在字符串列表中。在Py3k里怎么做?
编辑:我可以让第三方打印在中间部分,而不是我自己的打印,所以代码必须是通用的“print()”。
Tags:
当我需要构建一个
ncurses
应用程序时,我经常这样做:它在python 3和python 2上运行良好。
与其滚动您自己的类,我认为最简单的方法是用您保持引用的
StringIO
实例替换sys.stdout
(这只是一个TextIOWrapper
):正如@unutbu所说,您可以使用
sys.stdout = sys.__stdout__
恢复原始stdout;我特别喜欢使用上下文管理器将stdout临时重定向到您希望它转到的位置。收益率
提示:您不需要保存原始的
sys.stdout
因为
sys.stdout
可以用您还可以通过使
ListStream
成为contextmanager来添加一些语法糖:通过添加
__enter__
和__exit__
方法,现在可以在with-statement
中使用ListStream
,当Python退出with-suite
时,该方法将自动为您重置sys.stdout
:相关问题 更多 >
编程相关推荐