1

ANSIエスケープシーケンスを使用して端末に色付きの出力を表示する単純なPythonスクリプトがあります。

これはうまく機能しますが、出力が他の場所 (VIM など) で使用されている場合、すべての ANSI シーケンスが表示され、実際には判読できなくなります。

たとえば、RED を表示するには、次のようにします。

^[[91m Errors:
-------^[[0m

これは端末で完全に読み取り可能です。

出力を処理する必要があるときにこれらの文字を表示しないように、Python コマンド ライン ツールにフラグを追加することはできますが、出力を台無しにすることなく出力を色付けする方法があるかどうか疑問に思っていました。

ソリューションでは、Python Stdlib を使用するか、サード パーティのライブラリをインストールしないようにする必要があります。

ただし、このアプローチが Windows で機能しない場合でも、まったく問題ありません :)

4

2 に答える 2

3

onを呼び出して取得できるファイル記述子でos.isatty使用できます。stdoutfilenosys.stdout

編集:ファイルにもisattyメソッドがあるようです。したがって、osモジュールの使用を避けて、単に使用することができますsys.stdout.isatty()

于 2011-03-05T02:08:32.113 に答える
1

この回答を見てください。あなたが求めているものを正確にカバーしています

sys.stdout が端末に接続されているかどうかを検出するにはどうすればよいですか?

于 2011-03-05T02:09:40.210 に答える