2

重複の可能性:
stdin が C/C++/Qt の端末またはパイプかどうかを検出しますか?

プログラムの出力が直接端末に送信されるのか、パイプラインまたはファイルにリダイレクトされるのかを知りたいです。

ターミナルに入ると、エスケープシーケンスを出力してカラーテキストを作成したいのですが、ファイルまたはパイプラインでは歓迎されません。

「ls」がそれを行うので、それが可能であることは知っていますが、誰も方法を知っていますか?

4

1 に答える 1

5

テストする必要があるストリームまたはその他のファイルのファイル記述子でos.isatty()関数を使用します。stdout

>>> import sys, os
>>> os.isatty(sys.stdout.fileno())
True

開いているファイル (sys.stdoutストリームなど) の場合、.fileno()メソッドは必要な記述子を返します。

于 2012-12-02T12:45:14.087 に答える