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

2024-04-25 00:47:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python脚本,它需要抑制stdin的回声,当您使用键盘响应提示时会发生这种情况。在

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

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

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

有什么方法可以让我检查raw_input()的输出,并且只有当输入来自键盘时才运行VT100控制代码?在


Tags: 文件代码pytest脚本stdinstdout情况
2条回答

您需要的函数是filehandles上的isatty(“is a TTY”)。你可以测试一下标准输入, 系统标准输出或者系统标准随你需要。在

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

顺便说一句,这也是Python用来检测是否显示交互式提示(只需试试cat | Python)

"... suppress the echo of ^{} ..."

Here’s a function that prompts for a password with echoing turned off...

相关问题 更多 >