python文字列の設定色は魅力的です。ここに私のPythonスクリプトから作業抜粋です:コードからANSI文字列を抽出ansi文字列がgetenvでロードされているときにAnsiColorプラグインが動作しない
All Tests OK.
:
line = "All Tests OK."
print('\033[31m \033[1m' + line + '\033[0m');
これは、このような色ジェンキンスコンソール出力になりコードの読みやすさを向上させるために、カラー文字列とエスケープシーケンスをグローバルコンフィグレーションファイルに移動したいと思います。だから私は、ビルド環境のグローバル設定の束を持っている私のbuild.conf.batバッチファイルを持っており、それはこのようなANSICOLORための5つの変数が含ま:Pythonスクリプトで
set ansiBlue=\033[34m
set ansiRed=...
を私はすべてのそれらの環境変数にアクセスすることができますバッチ設定ファイルに定義されて
print(os.getenv('ansiBlue') + " " + line + os.getenv('ansiOff'))
を使用してこれは、ANSIコードの文字列を返します。 はここまで、すべてが正常であるが、ジェンキンスは、ビルドを実行するときに、コンソール出力は次のようである:
\033[34m All Tests OK. \033[0m
だから、手作業で作成した文字列は動作しますが、変数の文字列が動作しません。どうして? 私の質問は、これらの変数をJenkinsのコンソール出力で動作させるにはどうすればよいですか?
-
PS:私はすでに、その後の印刷(STR(testOutput))を使って文字列に変換された変数にconcatonated文字列をラップしているが、これはまだ成功していない。..
Pythonのパーサは、エスケープ文字に '\ 033'を変換しますが、バッチパーサーはその翻訳を行いませんので、あなたの' os.getenv'は、バックスラッシュと3桁の数字を読み取ります。 ( '\\ 033'、 '\ 033')replaceはあなたの問題を解決する可能性があります。 –
の 'replace'が動作するはずです。また、Latin-1のソーステキストでは、' codecs.decode(source_string、 'unicode_escape') 'を使うことができます。 – eryksun
出力にダブルバックスラッシュを見たことはありませんが、replace()のヒントはうまくいきました。 – domih