プログラムの出力が直接端末に送信されるのか、パイプラインまたはファイルにリダイレクトされるのかを知りたいです。
ターミナルに入ると、エスケープシーケンスを出力してカラーテキストを作成したいのですが、ファイルまたはパイプラインでは歓迎されません。
「ls」がそれを行うので、それが可能であることは知っていますが、誰も方法を知っていますか?
テストする必要があるストリームまたはその他のファイルのファイル記述子でos.isatty()
関数を使用します。stdout
>>> import sys, os
>>> os.isatty(sys.stdout.fileno())
True
開いているファイル (sys.stdout
ストリームなど) の場合、.fileno()
メソッドは必要な記述子を返します。