Python 标准类库-Windows特殊服务之msvcrt
標(biāo)準(zhǔn)類庫(kù)-Windows特殊服務(wù)之msvcrt
?
by:授客 QQ:1033553122
廣告:出售自研自動(dòng)化小平臺(tái)(無需編碼也可用),有需要請(qǐng)聯(lián)系
?
測(cè)試環(huán)境
win7 64位
Python 3.4 64bit
?
控制臺(tái)I/O
1.?例子?getch演示
假設(shè) 1.py腳本內(nèi)容如下:
?
#-*- coding:utf-8 -*-
?
import msvcrt
?
while True:
????ch = msvcrt.getch()
?print(ch)
????
windows cmd控制臺(tái)運(yùn)行腳本
E:\>cd /d E:\
E:\>python 1.py
b'1'
b'\r'
b'\x03'
?
?
如上,運(yùn)行程序后,等待輸入,先后輸入1, 回車,按Ctrl+c,按順序分別輸出以上帶背景色部分的內(nèi)容。
?
注意:實(shí)踐發(fā)現(xiàn),有些情況下,輸入中文,print(ch)會(huì)導(dǎo)致程序直接退出,解決方法就是使用寬字符版的方法。
?
2.?putch演示
#-*- coding:utf-8 -*-
?
import msvcrt
?
while True:
????ch = msvcrt.getch()
????msvcrt.putch(ch)
?
如上,運(yùn)行程序后,等待輸入,先后輸入1, 回車,按Ctrl+c,先是展示1,然后還是1,最后如下:
?
?
?
3.?例子?getche演示
#-*- coding:utf-8 -*-
?
import msvcrt
?
while True:
????ch = msvcrt.getche()
????
?
程序運(yùn)行后,先后輸入 1, 按 Ctrl + c鍵,中文輸入法下輸入 我們, 結(jié)果輸出如下
?
?
?
對(duì)比例子1,例子2,展示更為友好了,但是依舊不足的是中文沒法正常顯示。解決方案,使用getwch、getwche函數(shù)。
?
4.?例子 支持中文
#-*- coding:utf-8 -*-
?
import msvcrt
?
while True:
????ch = msvcrt.getwche()
????
程序運(yùn)行后,先后輸入 1, 按 Ctrl + c鍵,中文輸入法下輸入 我們, 結(jié)果輸出如下
?
?
?
?
5.?例子 循環(huán)讀取
#-*- coding:utf-8 -*-
?
import msvcrt
?
while True:
????ch = msvcrt.getch()
????msvcrt.putch(ch)
msvcrt.ungetch(ch)
?
程序運(yùn)行后,先后輸入 1,結(jié)果控制臺(tái)不斷的輸出1
?
6.?例子?做輸入判斷
?
#-*- coding:utf-8 -*-
?
import msvcrt
?
while True:
????ch = msvcrt.getch()
????print(ch)
????if ch == b'1':
????????print('get it')
????elif ch == b'\x03':
????????print('get it too')
?
程序運(yùn)行后,先后輸入 1, 按 Ctrl + c鍵,結(jié)果輸出如下
b'1'
get it
b'\x03'
get it too
?
對(duì)比實(shí)驗(yàn)
當(dāng)替換為寬字符版的getwch后,就不好按之前的方式判斷了,解決方案:采用ord函數(shù)。
?
#-*- coding:utf-8 -*-
?
import msvcrt
?
while True:
????ch = msvcrt.getwch()
????print(ch)
????if ch == '1':
????????print('get it')
????elif ord(ch) == 3:
????????print('get it too')
?
程序運(yùn)行后,先后輸入 1, 按 Ctrl + c鍵,結(jié)果輸出如下
?
?
?
ord函數(shù)
給一個(gè)Unicode字符,返回該字符的Unicode數(shù)字代碼
。例如,給定ord('a') 返回整數(shù)?97,ord('\u2020') 返回?8224。同chr相反。
?
?
函數(shù)解說
msvcrt.getch()
讀取一個(gè)由鍵盤輸入的單個(gè)字符,并返回該字符的字節(jié)字符串表示(Read a keypress and return the resulting character as a byte string),但不會(huì)回顯在控制臺(tái)。如果沒有按鍵輸入,則會(huì)一直等待輸入。
?
msvcrt.getwch()
寬字符版getch,返回Unicode的值。
?
msvcrt.getche()
類似,getch,但是如果按鍵輸入代表可打印字符,會(huì)回顯在控制臺(tái)。
?
msvcrt.getwche()
寬字符版getche,返回Unicode值。
?
?
msvcrt.putch(char)
打印字節(jié)字符到控制臺(tái),不緩沖。
?
msvcrt.putwch(unicode_char)
寬字符版的putch,接收Unicode值
?
msvcrt.ungetch(char)
把字節(jié)字符回寫到控制臺(tái)緩沖區(qū),將成為getch、getche下一次讀取的字符。
?
msvcrt.ungetwch(unicode_char)
寬字符版的ungetch,接收Unicode值。
?
?
更多相關(guān)資料,請(qǐng)查看官方文檔
?
轉(zhuǎn)載于:https://www.cnblogs.com/shouke/p/10157515.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Python 标准类库-Windows特殊服务之msvcrt的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广发DIY卡额度多少?有什么提额技巧?
- 下一篇: 心动了吗?元宇宙行业人才抢手:500万年