sys.stderr
コンソールかどうかを正しく検出するためにsys.stdout
、次のテストを実行しました。
if hasattr(sys.stderr, "isatty") and sys.stderr.isatty():
if platform.system()=='Windows':
# win code (ANSI not supported but there are alternatives)
else:
# use ANSI escapes
else:
# no colors, usually this is when you redirect the output to a file
これで、IDE(PyCharmなど)を介してこのPythonコードを実行しているときに、問題がより複雑になりました。最近、PyCharmはANSIのサポートを追加しましたが、最初のテストは失敗します。isatty
属性はありますが、に設定されていFalse
ます。
出力がANSIカラーリングをサポートしているかどうかを正しく検出するように、ロジックを変更したいと思います。1つの要件は、出力がファイルにリダイレクトされるときに、いかなる状況でも何かを出力する必要がないことです(コンソールの場合は許容されます)。
アップデート
https://gist.github.com/1316877に、より複雑なANSIテストスクリプトを追加しました