前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 标准类库-Windows特殊服务之msvcrt

Python 标准类库-Windows特殊服务之msvcrt

作者头像
授客
发布2019-09-11 16:43:46
1.2K0
发布2019-09-11 16:43:46
举报
文章被收录于专栏:授客的专栏授客的专栏

广告:出售自研自动化小平台(无需编码也可用),有需要请联系

测试环境

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
Python <wbr>标准类库-Windows特殊服务之msvcrt

对比例子1,例子2,展示更为友好了,但是依旧不足的是中文没法正常显示。解决方案,使用getwch、getwche函数。

4. 例子 支持中文

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

import msvcrt

while True:

ch = msvcrt.getwche()

程序运行后,先后输入 1, 按 Ctrl + c键,中文输入法下输入 我们, 结果输出如下

Python <wbr>标准类库-Windows特殊服务之msvcrt
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
Python <wbr>标准类库-Windows特殊服务之msvcrt

ord函数

给一个Unicode字符,返回该字符的Unicode数字代码

。例如,给定ord('a') 返回整数 97,ord('\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)

把字节字符回写到控制台缓冲区,将成为getch、getche下一次读取的字符。

msvcrt.ungetwch(unicode_char)

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档