2011-12-02 8 views
11

私はWindowsでANSIサポートを追加するPythonモジュールを探しています。Windows上でstdoutのANSIカラーを有効にするPythonモジュール?

これは、モジュールをインポートした後、ANSIエスケープ文字列を出力すると、それに応じて表示されることを意味します。

+0

これはPythonのMonkeypatchingを意味します。これは悪いことです。 stdoutフィルタを明示的に設定する方が良いでしょう。 –

答えて

3

coloramatendo.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コードを削除するのが正しいと思われます。

+0

ログファイルのANSIエスケープは問題ありません。たとえば、「less」Unixページャは、ANSIカラーシーケンスのテキストを正しく表示します。 – EOL

11

おそらくcoloramaモジュールを使用することをお勧めします。

実際、WindowsコンソールはANSIカラーをネイティブにサポートしていないと思います。 coloramaは、ANSIシーケンスをインターセプトし、適切なWindowsカラー変更呼び出しを実行することによって、この難しさを解決します。この方法では、WindowsとANSI準拠の端末の両方で同じ方法で色を印刷できるので、コードは非常に移植性が高くなります。

関連する問題