Python获取原始输入,但手动决定字符串何时完成

Python获取原始输入,但手动决定字符串何时完成,python,console,user-input,Python,Console,User Input,我希望有人在控制台中键入单词,并在按下“tab”键时从列表中自动完成。但是,raw_input在有人点击[Enter]之前不会返回字符串 在用户点击[Enter]之前,如何将字符读入变量 *注意:由于操作系统的问题,我不想使用import readline进行自动完成。On*nix使用选择Onsys.stdin等待字符,然后.read()将其输入。在Windows上使用msvcrt.kbhit()和msvcrt.getch()对于Unix,有一个关于此问题的官方常见问题解答条目: Edit(摘自

我希望有人在控制台中键入单词,并在按下“tab”键时从列表中自动完成。但是,
raw_input
在有人点击[Enter]之前不会返回字符串

在用户点击[Enter]之前,如何将字符读入变量


*注意:由于操作系统的问题,我不想使用
import readline
进行自动完成。

On*nix使用
选择
On
sys.stdin
等待字符,然后
.read()
将其输入。在Windows上使用
msvcrt.kbhit()
msvcrt.getch()

对于Unix,有一个关于此问题的官方常见问题解答条目:


Edit(摘自Donal Fellows下面的评论):“问题是终端默认处于“煮熟”模式(允许简单的行编辑),要在键入密钥时获取密钥,必须将其置于“原始”模式。”(谢谢!)

您能详细介绍一下这个解决方案吗?我无法实现它,因为我不熟悉select模块…:/@EOL:“不熟悉”是什么意思?也许您应该(1)编写一些代码,然后(2)就代码中的任何具体问题单独提问。@S.Lott:以下代码不会捕获第一个字符,而是等待按下enter键:
import select,sys;char=select.select([sys.stdin],[])[0][0]。读取(1);打印“读取%s”%char
。可能这是因为我不熟悉
select
模块,不知道如何使用它绝对是正确的答案。您可能需要编辑,因为问题是终端默认处于“煮熟”模式(允许简单的行编辑),并且要在键入密钥时获取密钥,必须将其置于“原始”模式。在这一点上,提问者还必须担心糟糕的打字和操作系统通常为他们做的其他事情。