使用geten加载ansi字符串时,AnsiColor插件不起作用

2024-09-30 00:38:49 发布

您现在位置:Python中文网/ 问答频道 /正文

从python字符串设置颜色就像一个符咒。下面是我的python脚本中的一个工作片段:

line = "All Tests OK."
print('\033[31m \033[1m' + line + '\033[0m');

这将产生一个如下所示的彩色Jenkins控制台输出:

^{pr2}$

从代码中提取ANSI字符串:

为了提高文件的可读性,我想移动一个全局的字符串和代码的可读性。所以我有我的构建.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))将其字符串化,但仍然没有成功。。在


Tags: 文件字符串代码脚本linetestsokall
1条回答
网友
1楼 · 发布于 2024-09-30 00:38:49

如“@mc nd”所述,反斜杠以某种方式逃过了输出,而从env导入则没有。所以用双反斜杠代替单反斜杠就行了。谢谢!!在

print(os.getenv('ansiBlue').replace('\\033', '\033') + line + os.getenv('ansiOff').replace('\\033', '\033')); 

这将使代码的可读性提高10倍。所以我将替换代码外部化到一个实用程序文件中。在

^{pr2}$

相关问题 更多 >

    热门问题