为什么 tqdm 输出定向到 sys.stderr 而不是 sys.stdout?

问题描述 投票:0回答:1

根据 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?

python stdout stderr sys tqdm
1个回答
1
投票

我认为将进度条重定向到

sys.stderr
使
tqdm
在命令行中更强大。例如,考虑这个命令

$ time find . -name '*.py' -type f -exec cat \{} \; | tqdm | wc -l

简单地在管道之间插入

tqdm
将通过所有
stdin
stdout
,同时打印进度到
stderr
。这使得管道更容易,因为它不会改变一个命令的输出。

© www.soinside.com 2019 - 2024. All rights reserved.