我试图在从管道接收时读取 Python 脚本中的 stdin。
我使用了这些行:
for line in sys.stdin:
print line
并运行脚本:
echo "test" | script.py
到目前为止它工作正常。但是,如果我不使用管道,程序会停留在
for
命令。意思是调用:./script.py
会使脚本不起作用。我怎样才能解决这个问题?
最佳答案
编辑:在这种情况下,您显然甚至不希望它读取行或处理 KeyboardInterrupt
,所以你需要做的是检查空 stdin
.检查您是否是终端并按编辑后的示例所示通过。sys.stdin
是类文件。尝试:
if not sys.stdin.isatty():
data = sys.stdin.readlines()
# Do something with data
如果你在没有
stdin
的情况下运行它我不认为它会像以前那样卡在你身上...因为 sys.stdin
将是空的。然后该功能应继续。
关于python - 从管道读取 Python 标准输入,不阻塞空输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53541223/