我有一个Python脚本需要抑制当您使用键盘响应提示时发生的stdin
的回声。
使用键盘时,我可以使用VT100控制代码向上移动一行,清除该行,然后向上移动另一行(以便输出清除新消隐的行)。
然而,当输入来自文件(即cat test | myscript.py
时,此代码会混淆输出并最终清除一行有效输出,因为在这种情况下stdin似乎没有向stdout回显任何内容。 / p>
我无法控制输入如何发送到脚本,我不知道用户是否会使用键盘或文件。
有没有办法检查raw_input()的输出,如果输入来自键盘,只运行VT100控制代码?
答案 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
..."
这是一个提示输入密码并关闭回显的函数...