zoukankan      html  css  js  c++  java
  • 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' '

    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值。

     

     

    更多相关资料,请查看官方文档

  • 相关阅读:
    CSS语言
    HTML语言
    JDBC技术
    存储过程
    Oracle和Mysql数据库技术
    正则表达式
    反射
    XML技术
    设计模式初步专题(自学,适合初级.更深入的会在框架阶段)
    线程池专题(自学)
  • 原文地址:https://www.cnblogs.com/shouke/p/10157515.html
Copyright © 2011-2022 走看看