我有一个打印字符串的Python脚本。现在在Jenkins中运行它时,我没有在Jenkins Builds'控制台输出中看到打印的字符串。是否有解决方法?
在运行Python脚本时,尝试使用-u
(无缓冲)选项。
python -u my_script.py
stdout
都应该被控制台输出捕获。但需要注意的是,除非打印了换行符,否则不会显示输出内容,请确保您的每一行都以换行符结束。sys.stdout.write('\r foo bar')
和 sys.stdout.flush()
在同一行上打印循环的日志。在我的控制台中,它按预期工作。但是在 Jenkins 控制台输出中,日志直到全部完成后才显示。现在我测试环境变量 BUILD_NUMBER
的值,以使用 sys.stdout.write
或只是 print
。 - ElpieKay我认为你需要做的是刷新(flush),尝试:
import sys
sys.stdout.flush()
它应该有所帮助。
接受的答案让我找到了正确的方向,但在我的情况下,Jenkins正在运行的shell脚本将python脚本的输出捕获到变量中的子shell中,即a = $(python_script)
,因此它没有被回显......
为了解决这个问题,我只需将日志记录到stderr而不是stdout,即:
import sys
sys.stderr.write("my info\n")
sys.stdout.flush()