如何检查raw_input()是否来自Python中的键盘

时间:2012-09-25 17:30:11

标签: python raw-input

我有一个Python脚本需要抑制当您使用键盘响应提示时发生的stdin的回声。

使用键盘时,我可以使用VT100控制代码向上移动一行,清除该行,然后向上移动另一行(以便输出清除新消隐的行)。

然而,当输入来自文件(即cat test | myscript.py时,此代码会混淆输出并最终清除一行有效输出,因为在这种情况下stdin似乎没有向stdout回显任何内容。 / p>

我无法控制输入如何发送到脚本,我不知道用户是否会使用键盘或文件。

有没有办法检查raw_input()的输出,如果输入来自键盘,只运行VT100控制代码?

2 个答案:

答案 0 :(得分:7)

您想要的功能是文件句柄上的isatty(“是TTY”)。您可以根据需要在sys.stdin,sys.stdout或sys.stderr上进行测试。

>>> import sys
>>> sys.stdin.isatty()
True

顺便说一句,这就是Python正在做的事情,以检测是否显示交互式提示(只是尝试cat | python)

答案 1 :(得分:1)

"... suppress the echo of stdin ..."

  

这是一个提示输入密码并关闭回显的函数...