如何在Jenkins控制台输出中获取Python打印结果

14 投票
4 回答
21495 浏览
提问于 2025-04-18 01:06

我有一个Python脚本,它会打印一些字符串。现在我在Jenkins中运行这个脚本时,发现Jenkins的构建控制台输出里没有看到这些打印的字符串。

有没有办法能让它显示出来呢?

4 个回答

0

接受的答案让我找到了正确的方向,不过在我的情况下,Jenkins运行的一个脚本把Python脚本的输出放到了一个子进程的变量里,也就是用这种方式:a=$(python_script),所以输出没有显示出来……

为了解决这个问题,我只需要把日志输出到错误输出流,而不是正常输出流,也就是这样做:

import sys
sys.stderr.write("my info\n")
sys.stdout.flush()
2

我觉得你需要做的是一个 flush 操作,试试这个:

import sys
sys.stdout.flush()

这样应该会有帮助。

5

从Jenkins启动的任何进程输出到stdout的内容都会被控制台输出捕获。不过,有一点需要注意的是,只有在输出中包含换行符的时候,这些内容才会显示出来,所以一定要确保你的每一行都以换行符结束。

如果你以某种奇怪的方式启动Python,导致它和Jenkins的父进程失去关联,那我就帮不了你了。

21

试着在运行 Python 脚本的时候加上 -u 这个选项,它的意思是无缓冲

你可以这样运行:python -u my_script.py

撰写回答