Python 標准類庫-Windows特殊服務之msvcrt


標准類庫-Windows特殊服務之msvcrt

 

by:授客 QQ1033553122

廣告:出售自研自動化小平台(無需編碼也可用),有需要請聯系

 

測試環境

win7 64

Python 3.4 64bit

 

控制台I/O

1. 例子 getch演示

假設 1.py腳本內容如下:

 

#-*- coding:utf-8 -*-

 

import msvcrt

 

while True:

    ch = msvcrt.getch()

 print(ch)

    

windows cmd控制台運行腳本

E:\>cd /d E:\

E:\>python 1.py

b'1'

b'\r'

b'\x03'

 

 

如上,運行程序后,等待輸入,先后輸入1, 回車,按Ctrl+c,按順序分別輸出以上帶背景色部分的內容。

 

注意:實踐發現,有些情況下,輸入中文,print(ch)會導致程序直接退出,解決方法就是使用寬字符版的方法。

 

2. putch演示

#-*- coding:utf-8 -*-

 

import msvcrt

 

while True:

    ch = msvcrt.getch()

    msvcrt.putch(ch)

 

如上,運行程序后,等待輸入,先后輸入1, 回車,按Ctrl+c,先是展示1,然后還是1,最后如下:

 


 

 

3. 例子 getche演示

#-*- coding:utf-8 -*-

 

import msvcrt

 

while True:

    ch = msvcrt.getche()

    

 

程序運行后,先后輸入 1, 按 Ctrl + c鍵,中文輸入法下輸入 我們, 結果輸出如下

Python <wbr>標准類庫-Windows特殊服務之msvcrt 

 

 

對比例子1,例子2,展示更為友好了,但是依舊不足的是中文沒法正常顯示。解決方案,使用getwchgetwche函數。

 

4. 例子 支持中文

#-*- coding:utf-8 -*-

 

import msvcrt

 

while True:

    ch = msvcrt.getwche()

    

程序運行后,先后輸入 1, 按 Ctrl + c鍵,中文輸入法下輸入 我們, 結果輸出如下

Python <wbr>標准類庫-Windows特殊服務之msvcrt

 

 

 

 

5. 例子 循環讀取

#-*- coding:utf-8 -*-

 

import msvcrt

 

while True:

    ch = msvcrt.getch()

    msvcrt.putch(ch)

msvcrt.ungetch(ch)

 

程序運行后,先后輸入 1,結果控制台不斷的輸出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')

 

程序運行后,先后輸入 1, 按 Ctrl + c鍵,結果輸出如下

b'1'

get it

b'\x03'

get it too

 

對比實驗

當替換為寬字符版的getwch后,就不好按之前的方式判斷了,解決方案:采用ord函數。

 

#-*- 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')

 

程序運行后,先后輸入 1, 按 Ctrl + c鍵,結果輸出如下

Python <wbr>標准類庫-Windows特殊服務之msvcrt

 

 

 

ord函數

給一個Unicode字符,返回該字符的Unicode數字代碼

。例如,給定ord('a') 返回整數 97ord('\u2020') 返回 8224。同chr相反。

 

 

函數解說

msvcrt.getch()

讀取一個由鍵盤輸入的單個字符,並返回該字符的字節字符串表示(Read a keypress and return the resulting character as a byte string),但不會回顯在控制台。如果沒有按鍵輸入,則會一直等待輸入。

 

msvcrt.getwch()

寬字符版getch,返回Unicode的值。

 

msvcrt.getche()

類似,getch,但是如果按鍵輸入代表可打印字符,會回顯在控制台。

 

msvcrt.getwche()

寬字符版getche,返回Unicode值。

 

 

msvcrt.putch(char)

打印字節字符到控制台,不緩沖。

 

msvcrt.putwch(unicode_char)

寬字符版的putch,接收Unicode

 

msvcrt.ungetch(char)

把字節字符回寫到控制台緩沖區,將成為getchgetche下一次讀取的字符。

 

msvcrt.ungetwch(unicode_char)

寬字符版的ungetch,接收Unicode值。

 

 

更多相關資料,請查看官方文檔

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM