溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python?input輸入超時選擇默認(rèn)值自動跳過問題怎么解決

發(fā)布時間:2023-02-22 16:43:17 來源:億速云 閱讀:111 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“Python input輸入超時選擇默認(rèn)值自動跳過問題怎么解決”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Python input輸入超時選擇默認(rèn)值自動跳過問題怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

    Python input 等待鍵盤輸入,超時選擇默認(rèn)值,釋放input,之后重新進(jìn)入等待鍵盤輸入狀態(tài),直到用戶輸入可用數(shù)據(jù)。

    一、調(diào)用 func_timeout 模塊實(shí)現(xiàn)超時控制

    1、安裝 func_timeout 庫

    pip install func_timeout

    2、使用 func_timeout 庫

    func_set_timeout 裝飾器設(shè)置超時時間,程序超時后會拋出func_timeout.exceptions.FunctionTimedOut異常

    import func_timeout@func_timeout.func_set_timeout(3)  #超時時間為 3sdef Input_task():    print('請輸入:')    return input()

    3、使用 try…except 捕捉異常

    def task():    try:        s = Input_task()        print('成功輸入')    except func_timeout.exceptions.FunctionTimedOut as e:        s = '默認(rèn)值!'    print(s)

    4、問題

    下面的代碼中將 task() 函數(shù)放進(jìn) while 循環(huán),出現(xiàn)超時異常后,手動輸入無效

    import func_timeoutfrom func_timeout import func_set_timeouttimeout = 4@func_set_timeout(timeout)def Input_task():    print('請輸入:')    return input()def task():    try:        s = Input_task()        print('成功輸入')        run_flag = False    except func_timeout.exceptions.FunctionTimedOut as e:        s = '默認(rèn)值!'        run_flag = True    print(s)    return run_flag   #如果成功輸入將退出 while 循環(huán)run_flag = Truewhile run_flag:    run_flag = task()

    運(yùn)行結(jié)果:

    Python?input輸入超時選擇默認(rèn)值自動跳過問題怎么解決

    小結(jié):該模塊只能進(jìn)行一次超時控制,當(dāng)程序第一次拋出超時異常后,即使用戶輸入數(shù)據(jù)也無濟(jì)于事

    二、使用 Timer 定時器和模擬鍵盤輸入實(shí)現(xiàn)超時控制

    1、Timet 定時器

    是Thead類的一個子類,可用于在指定時間間隔后啟動線程

    # 導(dǎo)入線程模塊import threading timer = threading.Timer(interval, function, args=None, kwargs=None)

    參數(shù)介紹:

    • interval — 定時器間隔,間隔多少秒之后啟動定時器任務(wù)(單位:秒);

    • function — 線程函數(shù);

    • args — 線程參數(shù),可以傳遞元組類型數(shù)據(jù),默認(rèn)為空(缺省參數(shù));

    • kwargs — 線程參數(shù),可以傳遞字典類型數(shù)據(jù),默認(rèn)為空(缺省參數(shù))

    2、模擬鍵盤輸入

    (1) PyUserInput模塊安裝

    pip install PyUserInput

    python3.5的PyMouse和PyKeyboard模塊都集成到了PyUserInput模塊中

    (2) 鍵盤實(shí)例化

    from pykeyboard import PyKeyboardk = PyKeyboard()#鍵盤的實(shí)例 k

    (3) 鍵盤操作說明

    單個按鍵

    k.type_string(‘Hello, World!')	#模擬鍵盤輸入字符串k.press_key(‘H')	#模擬鍵盤按H鍵k.release_key(‘H')	#模擬鍵盤松開H鍵k.tap_key(“H”)	#模擬點(diǎn)擊H鍵k.tap_key(‘H',n=2,interval=5)	#模擬點(diǎn)擊H鍵,2次,每次間隔5秒k.tap_key(k.function_keys[5])	#點(diǎn)擊功能鍵F5k.tap_key(k.numpad_keys[5],3)	#點(diǎn)擊小鍵盤5,3次

    組合鍵(例如同時按alt+tab鍵盤 )

    k.press_key(k.alt_key)	#按住alt鍵k.tap_key(k.tab_key)	#點(diǎn)擊tab鍵k.release_key(k.alt_key)	#松開alt鍵

    3、代碼實(shí)現(xiàn)

    from pykeyboard import PyKeyboardimport threadingdef Input_simulate(timeout):    if not Input_event.is_set():            key = PyKeyboard()#鍵盤的實(shí)例 key        key.type_string('no input')  #模擬鍵盤輸入字符串        key.press_key(key.enter_key)  #模擬按下 ENTER 鍵        key.release_key(key.enter_key)  #模擬釋放 ENTER 鍵    global timer  #將定時器的句柄定義成一個全局變量,這樣做的好處是,創(chuàng)建的定時器進(jìn)程和實(shí)例不會堆積,而是覆蓋,避免不必要的內(nèi)存占用。    Input_event.clear()    timer = threading.Timer(timeout, Input_simulate, args=(timeout,))    timer.start()    msg = input('請輸入你的信息:')    if msg == 'no input':        pass    else:        print(msg)    #打印輸入信息        timer.cancel()  #取消定時器的調(diào)度,當(dāng)用戶輸入數(shù)據(jù)時將停止計時,程序退出運(yùn)行if __name__ == '__main__':    Input_event = threading.Event()    Input_event.set()    Input_simulate(5)

    運(yùn)行結(jié)果:

    Python?input輸入超時選擇默認(rèn)值自動跳過問題怎么解決

    小結(jié):該代碼等待鍵盤輸入,超時選擇默認(rèn)值,釋放input,之后重新進(jìn)入等待鍵盤輸入狀態(tài),直到用戶輸入可用數(shù)據(jù)。

    讀到這里,這篇“Python input輸入超時選擇默認(rèn)值自動跳過問題怎么解決”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI