我有一个打印字符串的Python脚本。现在当在Jenkins中运行它时,我没有在Jenkins Builds的控制台输出中看到打印的字符串。无论如何要做到这一点?
9jyewag01#
运行python脚本时,尝试使用-u(unbuffered)选项。python -u my_script.py
-u
python -u my_script.py
7hiiyaii2#
从Jenkins派生的进程到stdout的任何输出都应该被Console Output捕获。一个警告是,只有打印了换行符,才会显示它,所以请确保行被终止。如果您以某种奇怪的方式启动python,使其与Jenkins父进程分离,那么我就无法帮助您。
stdout
unftdfkk3#
我相信你需要做的是一个flush,尝试:
flush
import sys sys.stdout.flush()
应该会有帮助。
u2nhd7ah4#
这个公认的答案让我找到了正确的方向,但是在我的例子中,Jenkins运行的shell脚本将subshell中的python脚本的输出捕获到一个变量(即a=$(python_script)),因此它没有被回显......为了解决这个问题,我只需要登录到stderr而不是stdout,即
a=$(python_script)
import sys sys.stderr.write("my info\n") sys.stdout.flush()
4条答案
按热度按时间9jyewag01#
运行python脚本时,尝试使用
-u
(unbuffered)选项。python -u my_script.py
7hiiyaii2#
从Jenkins派生的进程到
stdout
的任何输出都应该被Console Output捕获。一个警告是,只有打印了换行符,才会显示它,所以请确保行被终止。如果您以某种奇怪的方式启动python,使其与Jenkins父进程分离,那么我就无法帮助您。
unftdfkk3#
我相信你需要做的是一个
flush
,尝试:应该会有帮助。
u2nhd7ah4#
这个公认的答案让我找到了正确的方向,但是在我的例子中,Jenkins运行的shell脚本将subshell中的python脚本的输出捕获到一个变量(即
a=$(python_script)
),因此它没有被回显......为了解决这个问题,我只需要登录到stderr而不是stdout,即