如何在Windows机器上使用Python让用户输入字符串并设置超时?
我想让用户输入一些东西,但又不想一直等下去。Linux有解决办法,具体可以参考这个链接:Python中带超时的键盘输入,但我是在Windows环境下。有没有人能帮帮我?
1 个回答
2
不幸的是,在Windows系统上,
select.select
这个功能只能在网络连接上使用,不能用在普通文件或者控制台上。所以,如果你想在Windows上运行,就需要换一种方法。在Windows系统中,Python的标准库里有一个小模块叫做msvcrt
,里面有一些函数,比如msvcrt.kbhit
,可以告诉你是否有按键等待被读取。在这里,你可以先用sys.stdout.write
输出提示信息,然后进入一个小循环(可以加上time.sleep(0.2
之类的),这个循环会等待用户是否按下了任何键——如果按了键,你就可以用sys.stdin.readline
等等来读取输入,但如果在你设定的超时时间结束后,用户没有按下任何键,那就直接返回一个空字符串。以上这些假设是,如果用户已经开始输入内容,你就想无限期地等待(而不是在他们输入答案的过程中超时!)。否则,你就需要做更多的工作,因为你必须确保用户按下了回车键(这意味着你需要查看
sys.stdin
里面的内容,或者使用msvcrt.getch
,一个字符一个字符地读取)。幸运的是,从用户界面的角度来看,如果用户已经开始输入,就无限期等待的这个稍微简单的方法似乎是更好的选择——这样可以让你处理无人值守的控制台,同时如果用户在场的话,也能给他们足够的时间来完成他们的答案。