簡體   English   中英

如何要求用戶在Windows機器上輸入一個嵌入了python的超時字符串?

[英]how to ask user input a string with a timeout embeded in python on windows machine?

想要求用戶輸入一些但不想永遠等待的東西。 Linux有一個解決方案, 鍵盤輸入在Python中有超時 ,但我在Windows環境中。 有人可以幫幫我嗎?

感謝Alex Martelli

不幸的是,在Windows上,select.select僅適用於套接字,不適用於普通文件或控制台。 因此,如果您想在Windows上運行,則需要采用不同的方法。 僅在Windows上,Python標准庫有一個名為msvcrt的小模塊,包括msvcrt.kbhit等函數,它告訴您是否有任何按鍵等待讀取。 在這里,您可以sys.stdout.write提示,然后輸入一個小循環(包括time.sleep(0.2)左右),等待用戶是否按任意鍵 - 如果是,那么你可以sys.stdin .readline等,但是如果在你想要的超時結束后沒有擊中任何鍵,那么只需從你的函數中返回空字符串。

所有這些假設如果用戶已經開始輸入內容,那么您希望無限期地等待(在他們輸入答案的過程中不會超時!)。 否則,你還有更多的工作要做,因為你必須確保用戶已經命中了Return(這意味着你必須確切地查看sys.stdin中的內容,resp。使用msvcrt.getch,一次一個字符)。 幸運的是,如果用戶已經開始輸入,那么無限期等待的稍微簡單的方法似乎是從用戶界面的角度來看更好的方法 - 它可以讓你按照自己的意願處理無人值守的控制台,但如果用戶在其周圍,它會給出用戶一直希望完成他們的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM