根据 python python documentation concerning sys.stdou and sys.stderr:
stdout 用于print()和表达式语句的输出以及input()的提示;
解释器自己的提示和它的错误信息去 stderr.
然而,根据 ot tqdm 的文档,默认输出是 sys.stderr。
我很困惑为什么会这样,因为它似乎与解释器自己的提示或错误消息无关。我错过了什么?为什么 tqdm 输出指向 sys.stderr 而不是 sys.stdout?
编辑:我认为这里的讨论可以回答这个问题: 何时使用 sys.stdout 而不是 sys.stderr?
我认为将进度条重定向到
sys.stderr
使tqdm
在命令行中更强大。例如,考虑这个命令
$ time find . -name '*.py' -type f -exec cat \{} \; | tqdm | wc -l
简单地在管道之间插入
tqdm
将通过所有stdin
到stdout
,同时打印进度到stderr
。这使得管道更容易,因为它不会改变一个命令的输出。