1. ホーム
  2. python

stdinに何らかのデータがあるかどうかを確認するにはどうすればよいですか?

2023-11-02 19:32:29

質問

Pythonでは、どのようにして sys.stdin がデータを持っているかどうかを確認するには?

私が見つけたのは os.isatty(0) は、stdinがTTYデバイスに接続されているかどうかだけでなく、利用可能なデータがあるかどうかもチェックすることができます。

しかし、誰かが次のようなコードを使用すると

sys.stdin = cStringIO.StringIO("ddd")

で、その後に os.isatty(0) を使用していますが、まだTrueを返します。 stdinにデータがあるかどうかを確認するにはどうすればよいのでしょうか?

どのように解決するのですか?

Unix系では以下のようになります。

import sys
import select

if select.select([sys.stdin, ], [], [], 0.0)[0]:
    print("Have data!")
else:
    print("No data")

Windowsでは、selectモジュールはソケットでしか使用できないので、別のメカニズムを使用する必要があります。