3

stdin我有一个 Python 脚本,当您使用键盘响应提示时,该脚本需要抑制这种回声。

使用键盘时,可以用VT100控制码上移一行,清空一行,再上移一行(这样输出就清空了新的空行)。

但是,当输入来自文件时,此代码会弄乱输出并最终清除一行有效输出(即,cat test | myscript.py因为在这种情况下,stdin 显然不会向 stdout 回显任何内容。

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

我有什么方法可以检查 raw_input() 的输出,如果输入来自键盘,则只运行 VT100 控制代码?

4

2 回答 2

7

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

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

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

于 2012-09-25T17:34:35.523 回答
1

“……压制……的回声stdin

这是一个在关闭回显的情况下提示输入密码的功能......

于 2012-09-25T17:38:48.423 回答