欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

實(shí)現(xiàn)python版本的按任意鍵繼續(xù)/退出

 更新時(shí)間:2016年09月26日 08:54:26   作者:Linux公社  
本文給大家簡(jiǎn)單介紹了在windows以及l(fā)inux下實(shí)現(xiàn)python版本的按任意鍵繼續(xù)/退出功能,非常的簡(jiǎn)單實(shí)用,linux下稍微復(fù)雜些,有需要的小伙伴可以參考下

某天在群內(nèi)有同學(xué)問(wèn)到,在python下我用input或者raw_input都得輸入完后回車才能獲取到輸入的值,那如何實(shí)現(xiàn)任意鍵退出暫停等功能呢,我當(dāng)時(shí)也沒有多想,因?yàn)榻佑|python時(shí)間也不算長(zhǎng),主要還是Linux下的。

要實(shí)現(xiàn)該功能,需要的就是暫停程序、等待并捕捉用戶的一個(gè)鍵盤輸入,然后繼續(xù)執(zhí)行。Python 有內(nèi)建的庫(kù)能幫我們實(shí)現(xiàn)該功能,不過(guò)要區(qū)別對(duì)待 Windows 和 Linux。

當(dāng)然,Windows系統(tǒng)下會(huì)稍微簡(jiǎn)單一些,Windows系統(tǒng)下如果你安裝了python的環(huán)境,默認(rèn)自帶的一個(gè)模塊叫做msvcrt,import msvcrt,然后調(diào)用msvcrt.getch()即可。

1、按回車鍵退出。

#coding=utf-8
raw_input(unicode('按回車鍵退出...','utf-8').encode('gbk'))

2、按任意鍵繼續(xù)。

import os
os.system('pause')

接下來(lái)即Linux下實(shí)現(xiàn)python版本的按任意鍵退出。

初學(xué)Python時(shí)在總想實(shí)現(xiàn)一個(gè)按任意鍵繼續(xù)/退出的程序(受.bat毒害), 奈何一直寫不出來(lái), 最近學(xué)習(xí)Unix C時(shí)發(fā)現(xiàn)可以通過(guò) termios.h 庫(kù)來(lái)實(shí)現(xiàn), 嘗試一下發(fā)現(xiàn)Python也有這個(gè)庫(kù), 所以終于寫出一個(gè)這樣的程序. 下面是代碼:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import sys
import termios

def press_any_key_exit(msg):
  # 獲取標(biāo)準(zhǔn)輸入的描述符
  fd = sys.stdin.fileno()

  # 獲取標(biāo)準(zhǔn)輸入(終端)的設(shè)置
  old_ttyinfo = termios.tcgetattr(fd)

  # 配置終端
  new_ttyinfo = old_ttyinfo[:]

  # 使用非規(guī)范模式(索引3是c_lflag 也就是本地模式)
  new_ttyinfo[3] &= ~termios.ICANON
  # 關(guān)閉回顯(輸入不會(huì)被顯示)
  new_ttyinfo[3] &= ~termios.ECHO

  # 輸出信息
  sys.stdout.write(msg)
  sys.stdout.flush()
  # 使設(shè)置生效
  termios.tcsetattr(fd, termios.TCSANOW, new_ttyinfo)
  # 從終端讀取
  os.read(fd, 7)

  # 還原終端設(shè)置
  termios.tcsetattr(fd, termios.TCSANOW, old_ttyinfo)

if __name__ == "__main__":
  press_any_key_exit("按任意鍵繼續(xù)...")
  press_any_key_exit("按任意鍵退出...")

其他關(guān)于 termios 的信息可以參考Linux手冊(cè):

man 3 termios

另補(bǔ)充一下*nix終端的三種模式(摘自<Unix-Linux編程實(shí)踐教程>)

規(guī)范模式

規(guī)范模式, 也被成為cooked模式, 是用戶常見的模式.驅(qū)動(dòng)程序輸入的字符保存在緩沖區(qū), 并且僅在接收到回車鍵時(shí)才將這些緩沖的字符發(fā)送到程序.緩沖數(shù)據(jù)使驅(qū)動(dòng)程序可以實(shí)現(xiàn)最基本的編輯功能, 被指派這些功能的特定鍵在驅(qū)動(dòng)程序里設(shè)置, 可以通過(guò)命令stty或系統(tǒng)調(diào)用tcsetattr來(lái)修改

非規(guī)范模式

當(dāng)緩沖和編輯功能被關(guān)閉時(shí), 連接被成為非規(guī)范模式.終端處理器仍舊進(jìn)行特定的字符處理, 例如處理Ctrl-C及換行符之間的轉(zhuǎn)換, 但是編輯鍵將沒有意義, 因此相應(yīng)的輸入被視為常規(guī)的數(shù)據(jù)輸入 程序需要自己實(shí)現(xiàn)編輯功能

raw模式

當(dāng)所有處理都被關(guān)閉后, 驅(qū)動(dòng)程序?qū)⑤斎胫苯觽鬟f給程序, 連接被成為raw模式.

相關(guān)文章

  • 使用python怎樣產(chǎn)生10個(gè)不同的隨機(jī)數(shù)

    使用python怎樣產(chǎn)生10個(gè)不同的隨機(jī)數(shù)

    這篇文章主要介紹了使用python實(shí)現(xiàn)產(chǎn)生10個(gè)不同的隨機(jī)數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • wxpython+pymysql實(shí)現(xiàn)用戶登陸功能

    wxpython+pymysql實(shí)現(xiàn)用戶登陸功能

    這篇文章主要介紹了wxpython+pymysql實(shí)現(xiàn)用戶登陸功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 一篇文章帶你了解谷歌這些大廠是怎么寫 python 代碼的

    一篇文章帶你了解谷歌這些大廠是怎么寫 python 代碼的

    這篇文章主要介紹了谷歌這些大廠怎么寫python代碼,我們寫代碼,往往還是按照其它語(yǔ)言的思維習(xí)慣來(lái)寫,那樣的寫法不僅運(yùn)行速度慢,代碼讀起來(lái)也費(fèi)盡,給人一種拖泥帶水的感覺,需要的朋友可以參考下
    2021-09-09
  • Python利用matplotlib畫出漂亮的分析圖表

    Python利用matplotlib畫出漂亮的分析圖表

    這篇文章主要介紹了Python利用matplotlib畫出漂亮的分析圖表,文章首先引入數(shù)據(jù)集展開詳情,需要的朋友可以參考一下
    2022-07-07
  • Python處理菜單消息操作示例【基于win32ui模塊】

    Python處理菜單消息操作示例【基于win32ui模塊】

    這篇文章主要介紹了Python處理菜單消息操作,結(jié)合實(shí)例形式分析了Python基于win32ui模塊實(shí)現(xiàn)菜單的創(chuàng)建及菜單項(xiàng)響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • python繪制堆疊條形圖介紹

    python繪制堆疊條形圖介紹

    大家好,本篇文章主要講的是python繪制堆疊條形圖介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 3分鐘學(xué)會(huì)一個(gè)Python小技巧

    3分鐘學(xué)會(huì)一個(gè)Python小技巧

    Python時(shí)間日期轉(zhuǎn)換在開發(fā)中是非常高頻的一個(gè)操作,你經(jīng)常會(huì)遇到需要將字符串轉(zhuǎn)換成 datetime 或者是反過(guò)來(lái)將 datetime 轉(zhuǎn)換成字符串,今天小編給大家?guī)?lái)了一個(gè)Python小技巧,感興趣的朋友一起看看吧
    2018-11-11
  • Python中Parser的用法小結(jié)

    Python中Parser的用法小結(jié)

    argparse 模塊還會(huì)自動(dòng)生成幫助和使用手冊(cè),并在用戶給程序傳入無(wú)效參數(shù)時(shí)報(bào)出錯(cuò)誤信息,本文給大家介紹Python中Parser的用法小結(jié), 感興趣的朋友一起看看吧
    2023-12-12
  • 淺談python中統(tǒng)計(jì)計(jì)數(shù)的幾種方法和Counter詳解

    淺談python中統(tǒng)計(jì)計(jì)數(shù)的幾種方法和Counter詳解

    今天小編就為大家分享一篇淺談python中統(tǒng)計(jì)計(jì)數(shù)的幾種方法和Counter詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • PyQt5設(shè)置登錄界面及界面美化的實(shí)現(xiàn)

    PyQt5設(shè)置登錄界面及界面美化的實(shí)現(xiàn)

    這篇文章主要介紹了PyQt5設(shè)置登錄界面及界面美化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論