Python的解释器默认启用输出缓冲sys.stdout
吗?
如果答案是肯定的,那么禁用它的所有方法是什么?
建议到目前为止:
-u
命令行开关sys.stdout
在每次写入后刷新的对象PYTHONUNBUFFERED
env varsys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
是否有任何其他方式来设置一些全局标志sys
/ sys.stdout
程序执行过程中?
在要捕获文件中进程的标准输出但仍要在终端中显示此输出的情况下,可以在script
和之间进行选择tee
。在这种情况下,这些工具在本质上是等效的,还是有(可能是微妙的)理由偏爱一种?
这些程序script
和tee
设计用于不同的目的:
script
-制作终端会话的打字稿tee
- 管道配件script
和之间的重要区别tee
是:
script
传送它监督的进程的退出状态,而tee
作为过滤器甚至不知道它。script
捕获其监视的进程的stdin,stdout,stderr,而tee
仅捕获其过滤的流。在给定的上下文中,这些差异均不相关。