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

 

 

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

 

转载于:https://www.cnblogs.com/shouke/p/10157515.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud Gateway 路由转发之After(Before)路由断言工厂使用

前言 本文旨在介绍After&#xff08;Before&#xff09;路由断言工厂使用&#xff0c;以此类推可以使用其他路由断言工厂 案例 1、概念 网关简单的说就是提供一个对外统一的API入口和出口&#xff0c;统管企业对外的所有API出口。一般来说&#xff0c;网关对外暴露的URL或者接口…

redis服务器学习一

一&#xff1a;什么是redis服务器 redis是一个key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。这些数据类型都支…

RichTextBox 改变每行的字体颜色

RichTextBox 改变每行的字体颜色 1、新建方法AppendTextColorful(this RichTextBox rtBox, string text, Color color, bool addNewLine) 2、调用方法AppendTextColorful(this RichTextBox rtBox, string text, Color color, bool addNewLine) public stat…

Android使用token维持登陆状态的方法

什么是token token&#xff08;令牌&#xff09;是一串唯一的字符串&#xff0c;通常由服务端生成&#xff0c;在注册完成时返回给客户端&#xff0c;用来标识此用户&#xff0c;客户端将此字符串存储在本地。在以后的网络请求时&#xff0c;客户端先查询本地的token&#xff0…

阿里云RPA专有云产品文档集合

请访问以下链接&#xff1a; https://www.yuque.com/aliyun_rpa/

利用相机SDK采相转换至HImage

来源于http://blog.sina.com.cn/s/blog_d40acd530102xndm.html Halcon采相功能非常强大&#xff0c;基本支持各大品牌以及各个通信接口的相机&#xff0c;并且Halcon提供为相机厂商提供了制作Halcon相机接口库的办法&#xff0c;总之Halcon基本可以直接连接所有工业相机。 但…

java项目启动tomcat没报错,然后页面报404无法找到,重新编译后,出现以下状态...

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.BeanCreationException: Error creating bean with name MapperScannerConfigurer defined in c…

3.12PMP试题每日一题

哪一个是组织过程资产的事例&#xff1a;A、项目管理信息系统B、配置管理姿势库C、配置管理系统D、共享系统和云计算 作者&#xff1a;Tracy19890201&#xff08;同微信号&#xff09;转载于:https://blog.51cto.com/13554215/2361982

相机与镜头常识

1.焦距&#xff08;FocalLength&#xff09;   焦距是从镜头的中心点到胶平面上所形成的清晰影像之间的距离。焦距的大小决定着视角的大小&#xff0c;焦距数值小&#xff0c;视角大&#xff0c;所观察的范围也大&#xff1b;焦距数值大&#xff0c;视角小&#xff0c;观察范…

vsftpd的安装

简介 vsftpd是一个免费的开源的ftp服务器软件&#xff1b; 特点 小巧轻快&#xff0c;安全易用&#xff0c;支持虚拟用户、支持带宽限制等功能&#xff1b; 安装 执行 yum -y install vsftpd 创建虚拟用户(注意权限问题(chmod)&#xff0c;这个要根据情况来定) 选择在根或用户目…

halcon模板匹配测试流程

*1、创建模板&#xff08;获取要做模板区域的图像&#xff09; *create_shape_model (ImageReduced, 4, 0, rad(360), rad(1), none, use_polarity, 30, 10, ModelID) *2、获取形状模型---第二步&#xff08;为了显示找的的模板&#xff09; *get_shape_model_contours (…

企业云存储:为什么中大型企业偏爱自建私有云?

“上云&#xff1f;我们通常自建企业私有云。”9102年了&#xff0c;在云存储服务的选择上&#xff0c;中大型企业基本步调一致&#xff0c;统筹规划自建企业私有云。为什么中大型企业都偏爱自建企业私有云&#xff1f;一、长久的成本考量从账面上看&#xff0c;通常私有云初期…

ETL作业调度软件TASKCTL自定义扩展作业类型插件安装

TASKCTL批量自动化调度作业类型扩展插件的安装方法如下几种&#xff1a; 1、 直接覆盖法 直接覆盖法的意思就是将自定义扩展好的插件&#xff0c;通常是一个shell脚本&#xff0c;上传至后台调度核心服务上&#xff0c;然后修改后台任务类型的XML元素配置文件即可。 注意&#…

递归就这么简单

递归介绍 本来预算此章节是继续写快速排序的&#xff0c;然而编写快速排序往往是递归来写的&#xff0c;并且递归可能不是那么好理解&#xff0c;于是就有了这篇文章。 在上面提到了递归这么一个词&#xff0c;递归在程序语言中简单的理解是&#xff1a;方法自己调用自己 递归其…

阿里云RPA(机器人流程自动化)干货系列之二:认识RPA(下)

2019独角兽企业重金招聘Python工程师标准>>> 导读&#xff1a;本文是阿里云RPA&#xff08;机器人流程自动化&#xff09;干货系列之二&#xff0c;主要介绍了RPA的发展齐纳经和主要使用场景有哪些&#xff0c;目前国内外主流的RPA厂商以及RPA的未来在哪。 一、RPA的…

C# 图片的读取

//图片转成二进制public byte[] GetPictureData(string imagepath){/**/根据图片文件的路径使用文件流打开&#xff0c;并保存为byte[] FileStream FileStream new FileStream(imagepath, FileMode.Open);byte[] byData new byte[FileStream.Length];FileStream.Read(byData,…

SDOI2010 地精部落

题目描述 传说很久以前&#xff0c;大地上居住着一种神秘的生物&#xff1a;地精。 地精喜欢住在连绵不绝的山脉中。具体地说&#xff0c;一座长度为N的山脉H可分为从左到右的N段&#xff0c;每段有一个[b][u]独一无二[/u][/b]的高度Hi&#xff0c;其中Hi是1到N之间的正整数。 …

Codechef Yet another cute girl

题意大概就是让你求一下[L,R]中的约数个数是素数的数的个数。 其中1<L<R<1e12,R-L<1e6. 然后我写了两种做法&#xff0c;第一种是可以直接搞出来L-R的约数个数&#xff0c;然后直接统计一下就好了。 这个的复杂度大致是 O((R-L) * log(R-L)) 第二种就是需要先发现满…

简单弄一个-个人主页

--- 整理一下已经发表的文章 JAVA基础 java基础数据结构之-红黑树(插入)java基础数据结构之-红黑树(删除)了解一下jdk动态代理的本质了解一下cglib动态代理的本质SpringBoot源码解析 前言&#xff1a;阅读springboot源码之前&#xff0c;最好对spring源码有一定的了解&#xff…

Halocn OCR识别入门学习

一、建立OCR库 dev_close_window() read_image(Image,OCR) get_image_size(Image,Width,Hight) dev_open_window(0,0,Width,Hight,black,Window) dev_display(Image)*字符处理 rgb1_to_gray(Image,ImageGray) *鼠标画你要找的roi区域 draw_rectangle1(Window,Row1,Column1,Row…