一尘不染

如何检查stdin是否包含一些数据?

python

在Python中,如何检查是否sys.stdin有数据?

我发现不仅os.isatty(0)可以检查stdin是否已连接到TTY设备,还可以检查是否有可用数据。

但是如果有人使用诸如

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

然后使用os.isatty(0),它仍然返回True。我需要做什么检查stdin是否有数据?


阅读 117

收藏
2020-12-20

共1个答案

一尘不染

在Unix系统上,您可以执行以下操作:

import sys
import select

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

在Windows上,虽然select模块只能与套接字一起使用,所以您需要使用其他机制。

2020-12-20