我试图在从管道接收时读取 Python 脚本中的 stdin。我使用了这些行:for line in sys.stdin:
print line并运行脚本: echo "test" | script.py到目前为止它工作正常。但是,如果我不使用管道,程序就会坚持for命令。这意味着调用:./script.py将使脚本不起作用。我怎样才能解决这个问题?
3 回答

小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
编辑:在这种情况下KeyboardInterrupt,您显然甚至不希望它读取行或句柄,因此您需要做的是检查 empty stdin。检查您是否是终端并按编辑后的示例所示通过。
sys.stdin是类文件。尝试:
if not sys.stdin.isatty():
data = sys.stdin.readlines()
# Do something with data
如果你没有运行它,stdin我认为它不会像以前那样挂起......因为sys.stdin它将是空的。然后该功能应继续。
添加回答
举报
0/150
提交
取消