Python 标准类库-Windows特殊服务之msvcrt
标准类库-Windows特殊服务之msvcrt
by:授客 QQ:1033553122
广告:出售自研自动化小平台(无需编码也可用),有需要请联系
测试环境
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键,中文输入法下输入 我们,
结果输出如下

对比例子1,例子2,展示更为友好了,但是依旧不足的是中文没法正常显示。解决方案,使用getwch、getwche函数。
4. 例子
支持中文
#-*- coding:utf-8 -*-
import msvcrt
while True:
ch
= msvcrt.getwche()
程序运行后,先后输入 1, 按
Ctrl + c键,中文输入法下输入 我们,
结果输出如下


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键,结果输出如下


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值。
更多相关资料,请查看官方文档
Python 标准类库-Windows特殊服务之msvcrt的更多相关文章
- python 标准类库-并行执行之subprocess-子进程管理
标准类库-并行执行之subprocess-子进程管理 by:授客QQ:1033553122 1.使用subprocess模块 以下函数是调用子进程的推荐方法,所有使用场景它们都能处理.也可用Popen ...
- Python 标准类库- 因特网协议于支持之UUID
标准类库- 因特网协议于支持之UUID by:授客 QQ:1033553122 测试环境 python3 UUID生成函数定义 uuid.getnode() 获取一个表示硬件地址的48位正整数.第 ...
- Python 标准类库 - 因特网协议与支持之socketserver
标准类库 - 因特网协议与支持之socketserver by:授客 QQ:1033553122 socketserver 模块,简化网络服务编写任务. 创建服务的步骤 1 通过子类化BaseReq ...
- Python 标准类库-数据类型之copy-深拷贝浅拷贝操作
标准类库-数据类型之copy-深拷贝浅拷贝操作 by:授客 QQ:1033553122 Python中赋值并不会拷贝对象,只是创建目标和对象的绑定关系. copy.copy(x) 返回x的浅拷贝 ...
- python 标准类库-数据类型之集合-容器数据类型
标准类库-数据类型之集合-容器数据类型 by:授客 QQ:1033553122 Counter对象 例子 >>> from collections import Counter ...
- Python 标准类库-日期类型之datetime模块
标准类库-日期类型之datetime模块 by:授客 QQ:1033553122 可用类型 3 实践出真知 4 timedelta对象 4 class datetime.timedelta(da ...
- Python 标准类库-数字和数学模块之decimal使用简介
标准类库-数字和数学模块之decimal使用简介 by:授客 QQ:1033553122 例子 >>>from decimal import * >>>getcon ...
- Python 标准库一览(Python进阶学习)
转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
随机推荐
- ”危险“的restrict与GCC的编译优化
restrict是C99标准中新添加的关键字,对于从C89标准开始起步学习C语言的同学来说(包括我),第一次看到restrict还是相当陌生的.Wikipedia给出的解释如下: In the C p ...
- PHP拿到接口数据返回的json以及传参-----ajax 跨域请求 ---
以下测试------ <php $ch = curl_init(); $str = '';//此处为接口地址以及传参------- curl_setopt($ch, CURLOPT_URL, $ ...
- Tomcat添加HTTPS单向认证和双向认证
前言 前一段时间有了解如何配置Tomcat服务为Https单向认证和双向认证,当时也做了一些记录,今天开始写博客,就把以前的记录拿出来整理下,分享给大家.本文没有介绍证书如何生成,会在下一篇博文里介绍 ...
- 课程五(Sequence Models),第二 周(Natural Language Processing & Word Embeddings) —— 0.Practice questions:Natural Language Processing & Word Embeddings
[解释] The dimension of word vectors is usually smaller than the size of the vocabulary. Most common s ...
- linux的tar命令
Linux下的tar压缩解压缩命令详解 tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中 ...
- Asp.net core 环境配置
参考: 在 ASP.NET Core 中使用多个环境 ASP.NET Core 中的配置 在项目的 Properties\launchSettings.json中可以配置多个环境 { "ii ...
- mysql 开发基础系列19 触发器
触发器是与表有关的数据库对象,触发器只能是针对创建的永久表,而不能是临时表. 1.1 创建触发器 -- 语法: CREATE TRIGGER trigger_name trigger_time tri ...
- Android--UI之Button
前言 最近一直在讲androidUI控件的使用方式,这篇博客讲解一下基本上属于用处最广泛的控件之一的Button控件.如果有过其他平台开发经验的程序员,对按钮是不会陌生的.本篇博客首先讲解一下Andr ...
- Future、Callable 、FutureTask详解
1.Future和Callable Future是一个接口表示异步计算的结果,它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果.Future提供了get().cancel().isC ...
- 微信小程序使用wxParse解析html
最近项目上遇到在微信小程序里需要显示新闻内容,新闻内容是通过接口读取的服务器中的富文本内容,是html格式的,小程序默认是不支持html格式的内容显示的,那我们需要显示html内容的时候,就可以通过w ...