从python字符串设置颜色就像魅力一样。这是我的python脚本的一个工作片段:
line = "All Tests OK."
print('\033[31m \033[1m' + line + '\033[0m');
这会生成彩色 Jenkins控制台输出,如下所示:
All Tests OK.
从代码中提取ANSI字符串:
为了提高代码可读性,我想将颜色字符串和转义序列移动到全局配置文件中。所以我有我的build.conf.bat批处理文件,它有一堆构建环境的全局设置,它包含5个ansiColor变量,如下所示:
set ansiBlue=\033[34m
set ansiRed=...
在Python脚本中,我可以使用
访问所有这些环境变量print(os.getenv('ansiBlue') + " " + line + os.getenv('ansiOff'))
这将返回带有ANSI代码的字符串,如批处理配置文件中所定义。 直到这里,一切都很好但是当Jenkins运行构建时,控制台输出是这样的:
\033[34m All Tests OK. \033[0m
因此,手动创建的字符串可以工作,但变量中的字符串不起作用。为什么? 所以我的问题是,我该怎么做才能使这些变量在Jenkins控制台输出中起作用?
-
PS:我已经将连续字符串包装在一个变量中,然后用print(str(testOutput))进行字符串化,但这仍然没有成功..
答案 0 :(得分:0)
如#34; @mc nd"所述反斜杠以某种方式逃脱输出,而env的导入没有。因此,用双反斜杠替换单反斜杠现在就可以了。谢谢!
print(os.getenv('ansiBlue').replace('\\033', '\033') + line + os.getenv('ansiOff').replace('\\033', '\033'));
这提高了代码的可读性,减去因子减去十。所以我将替换代码外部化为实用程序文件。
print(util.ansiBlue + line + util.ansiOff);