<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一日一技:如何實(shí)現(xiàn)帶timeout的input?

          共 1404字,需瀏覽 3分鐘

           ·

          2022-07-06 09:06

          我們知道,在Python里面,可以使用input獲取用戶的輸入。例如:

          但有一個問題,如果你什么都不輸入,程序會永遠(yuǎn)卡在這里。有沒有什么辦法,可以給input設(shè)置超時時間呢?如果用戶在一定時間內(nèi)不輸入,就自動使用默認(rèn)值。

          要實(shí)現(xiàn)這個需求,在Linux/macOS系統(tǒng)下面,我們可以使用selectors。這是Python自帶的模塊,不需要額外安裝。對應(yīng)的代碼如下:

          import sys
          import selectors

          def timeout_input(msg, default='', timeout=5):
              sys.stdout.write(msg)
              sys.stdout.flush()
              sel = selectors.DefaultSelector()
              sel.register(sys.stdin, selectors.EVENT_READ)
              events = sel.select(timeout)
              if events:
                  key, _ = events[0]
                  return key.fileobj.readline().rstrip()
              else:
                  sys.stdout.write('\n')
                  return default

          運(yùn)行效果如下圖所示:

          selectors[1]這個模塊,可以使用系統(tǒng)層級的select,實(shí)現(xiàn)IO多路復(fù)用。

          這段代碼來自inputimeout[2]。上面除了Linux/macOS版本外,還有Windows版本。大家有興趣可以看一下。

          參考資料

          [1] 

          selectors: https://docs.python.org/3.8/library/selectors.html

          [2] 

          inputimeout: https://github.com/johejo/inputimeout/blob/master/inputimeout/inputimeout.py

          往期推薦
          1、Python比較兩個日期的多種方法!
          2、大一女生廢話編程爆火!懂不懂編程的看完都拴Q了
          3、用Python制作一個相冊播放器(附源碼)
          4、Cython 是什么?為什么會有 Cython?
          5、Python 中的萬能之王 Lambda 函數(shù)
          點(diǎn)擊關(guān)注公眾號,閱讀更多精彩內(nèi)容
          瀏覽 43
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产黄视频网站 | 高清+国产无码在线观看 | 久久性爱视频 | 欧美亚洲视频 | 成年人精品视频 |