从管道读取 Python 标准输入,不阻塞空输入

我试图在从管道接收时读取 Python 脚本中的 stdin。

我使用了这些行:

for line in sys.stdin:
    print line

并运行脚本: echo "test" | script.py

到目前为止它工作正常。但是,如果我不使用管道,程序就会坚持for命令。这意味着调用:./script.py将使脚本不起作用。我怎样才能解决这个问题?


侃侃无极
浏览 243回答 3
3回答

小怪兽爱吃肉

编辑:在这种情况下KeyboardInterrupt,您显然甚至不希望它读取行或句柄,因此您需要做的是检查 empty stdin。检查您是否是终端并按编辑后的示例所示通过。sys.stdin是类文件。尝试:if not sys.stdin.isatty():    data = sys.stdin.readlines()    # Do something with data如果你没有运行它,stdin我认为它不会像以前那样挂起......因为sys.stdin它将是空的。然后该功能应继续。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python