在Python中,如何检查
sys.stdin
是否有数据?我发现os.isatty(0)
不仅可以检查stdin是否连接到TTY设备,还可以检查是否有可用的数据。但是如果有人使用以下代码:sys.stdin = cStringIO.StringIO("ddd")
之后使用os.isatty(0)
,它仍然返回True。我需要做什么才能检查stdin是否有数据?
os.isatty(0)
检查与文件描述符(fd)0相关联的文件是否为TTY。当您更改sys.stdin
变量时,您并没有更改与 fd0 相关联的文件。fd0 仍然指向原始标准输入(stdin)(在您的情况下是TTY)。 - Cristian CiupitucStringIO.StringIO("ddd")
读取数据会如何阻塞;除了当然到达EOF时,它总是有可用的数据。 - Cristian Ciupitu