如何使tqdm与jenkins兼容?

13

我喜欢使用 tqdm 进度条,但是在 jenkins 上使用时,会出现很多奇怪的痕迹和太多的标准输出信息(具体来说,就是[A无处不在)。是否有一种秘密模式可以让 tqdm 在 jenkins 上正常工作?如果能够无缝检测像 jenkins 这样的非交互式 shell 就更好了。这是我的典型输出:

label: 0it [00:00, ?it/s][A
[A
 16%|#6        | 5378/33302 [36:28<2:30:49,  3.09it/s]
[A
 16%|#6        | 5379/33302 [36:29<2:36:46,  2.97it/s]
[A
...

在tqdm构造函数中有一个ascii选项。 - Alexander Rodin
这是一个开放的Jenkins问题 - technomage
1个回答

4
我会推荐选择类似这样的东西:
from tqdm import tqdm
import os

# try this
for i in tqdm(..., disable=None):
    ...

# alternative if the above doesn't work
for i in tqdm(..., disable=os.environ.get("JENKINS_HOME")):
    ...

# or even...
for i in tqdm(..., disable=os.environ.get("JENKINS_HOME") is not None):
    ...

请注意,disable=None 应该自动检查诸如 sys.stdout.isatty() 等内容。
不幸的是,无法解决 Jenkins 不支持 CR (\r) 的问题,这是 tqdm 的基本要求。
https://tqdm.github.io/ 上可以看到:

tqdm 不需要任何依赖项(甚至不需要 curses!),只需要 Python 和支持回车符 \r 和换行符 \n 控制字符的环境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接