私はWindowsでANSIサポートを追加するPythonモジュールを探しています。Windows上でstdoutのANSIカラーを有効にするPythonモジュール?
これは、モジュールをインポートした後、ANSIエスケープ文字列を出力すると、それに応じて表示されることを意味します。
私はWindowsでANSIサポートを追加するPythonモジュールを探しています。Windows上でstdoutのANSIカラーを有効にするPythonモジュール?
これは、モジュールをインポートした後、ANSIエスケープ文字列を出力すると、それに応じて表示されることを意味します。
colorama
とtendo.ansiterm
モジュールを実行できるPythonモジュールが2つあります。これはもともとwaf
のために書かれています。
最初のテストでは、colorama
は、1行ではなく2行のコードが必要な場合でも、より成熟していることが示されています。
import sys
try:
import colorama
colorama.init()
except:
try:
import tendo.ansiterm
except:
pass
sys.stdout.write"\033[33mYellow Submarine"
sys.stderr.write"\033[31mred, red , wine!"
今、両方が正常に動作しますが、あなたは、画面とリダイレクトされた出力にansitermが出力ANSIコードを、唯一の標準エラー出力または標準出力のリダイレクトしようとした場合。
確かにわかりませんが、出力がttyでなく、ANSIエスケープをログファイルに表示したくない場合は、ANSIコードを削除するのが正しいと思われます。
ログファイルのANSIエスケープは問題ありません。たとえば、「less」Unixページャは、ANSIカラーシーケンスのテキストを正しく表示します。 – EOL
おそらくcoloramaモジュールを使用することをお勧めします。
実際、WindowsコンソールはANSIカラーをネイティブにサポートしていないと思います。 coloramaは、ANSIシーケンスをインターセプトし、適切なWindowsカラー変更呼び出しを実行することによって、この難しさを解決します。この方法では、WindowsとANSI準拠の端末の両方で同じ方法で色を印刷できるので、コードは非常に移植性が高くなります。
これはPythonのMonkeypatchingを意味します。これは悪いことです。 stdoutフィルタを明示的に設定する方が良いでしょう。 –