最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2023年02月21日 14:35:25   作者:weixin_46909456  
這篇文章主要介紹了Python?input輸入超時選擇默認(rèn)值自動跳過問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

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

一、調(diào)用 func_timeout 模塊實現(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)  #超時時間為 3s
def 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_timeout
from func_timeout import func_set_timeout

timeout = 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 = True
while run_flag:
    run_flag = task()

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

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

二、使用 Timer 定時器和模擬鍵盤輸入實現(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) 鍵盤實例化

from pykeyboard import PyKeyboard

k = PyKeyboard()#鍵盤的實例 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)擊功能鍵F5
k.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、代碼實現(xiàn)

from pykeyboard import PyKeyboard
import threading

def Input_simulate(timeout):
    if not Input_event.is_set():    
        key = PyKeyboard()#鍵盤的實例 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)程和實例不會堆積,而是覆蓋,避免不必要的內(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é)果:

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

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 六個竅門助你提高Python運(yùn)行效率

    六個竅門助你提高Python運(yùn)行效率

    這篇文章主要介紹了六個竅門助你提高Python運(yùn)行效率,本文講解了關(guān)鍵代碼使用外部功能包、在排序時使用鍵、針對循環(huán)的優(yōu)化、使用較新的Python版本等優(yōu)化竅門,需要的朋友可以參考下
    2015-06-06
  • 基于Django集成CAS實現(xiàn)流程詳解

    基于Django集成CAS實現(xiàn)流程詳解

    這篇文章主要介紹了基于Django集成CAS實現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • python中validators庫的使用方法詳解

    python中validators庫的使用方法詳解

    這篇文章主要介紹了python中validators庫的使用方法詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Python 實現(xiàn)數(shù)據(jù)庫更新腳本的生成方法

    Python 實現(xiàn)數(shù)據(jù)庫更新腳本的生成方法

    下面小編就為大家?guī)硪黄狿ython 實現(xiàn)數(shù)據(jù)庫更新腳本的生成方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • selenium+python環(huán)境配置教程詳解

    selenium+python環(huán)境配置教程詳解

    這篇文章主要介紹了selenium+python環(huán)境配置教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Python之time模塊的時間戳,時間字符串格式化與轉(zhuǎn)換方法(13位時間戳)

    Python之time模塊的時間戳,時間字符串格式化與轉(zhuǎn)換方法(13位時間戳)

    今天小編就為大家分享一篇Python之time模塊的時間戳,時間字符串格式化與轉(zhuǎn)換方法(13位時間戳),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python裝飾器的兩種使用心得

    Python裝飾器的兩種使用心得

    裝飾器(Decorators)是 Python 的一個重要部分。簡單地說:他們是修改其他函數(shù)的功能的函數(shù)。他們有助于讓我們的代碼更簡短,也更Pythonic(Python范兒),今天通過本文給大家分享Python裝飾器使用小結(jié),感興趣的朋友一起看看吧
    2021-09-09
  • Python NumPy數(shù)組裁切和數(shù)據(jù)類型的實現(xiàn)即原理詳解

    Python NumPy數(shù)組裁切和數(shù)據(jù)類型的實現(xiàn)即原理詳解

    這篇文章主要介紹了Python NumPy數(shù)組裁切和數(shù)據(jù)類型的實現(xiàn)即原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-05-05
  • Python面向?qū)ο箢惖睦^承實例詳解

    Python面向?qū)ο箢惖睦^承實例詳解

    這篇文章主要介紹了Python面向?qū)ο箢惖睦^承,結(jié)合實例形式詳細(xì)分析了Python面向?qū)ο蟪绦蛟O(shè)計中類的繼承原理、定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-06-06
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例

    這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法,涉及Python collections模塊中的Counter類相關(guān)使用技巧與操作注意事項,需要的朋友可以參考下
    2018-03-03

最新評論

乌兰察布市| 安远县| 永州市| 瑞丽市| 海淀区| 高安市| 敦化市| 夏邑县| 平度市| 阿尔山市| 桓仁| 南京市| 曲阳县| 绿春县| 上饶县| 黄大仙区| 麟游县| 炉霍县| 青阳县| 城市| 大悟县| 阳信县| 教育| 沂水县| 东阳市| 夏河县| 鄂州市| 故城县| 芦溪县| 凤庆县| 富锦市| 都江堰市| 逊克县| 武冈市| 三河市| 蒙城县| 钟山县| 锡林郭勒盟| 麟游县| 丰原市| 北安市|