python实现按任意键继续执行程序


Posted in Python onDecember 30, 2016

在windows下写bat的时候,通过pause命令,可以暂停程序运行,例如经常见的程序会在终端提示”按任意键继续……”,用户在终端回车后程序可以接着运行,这个功能有多大用途今天暂且不说,但我觉得应该有很多人也想在python下实现这个功能,这样当自己写的python程序运行时, 突然给出这么一个提示,然后自己再来个帅气的回车,我觉得肯定给人一种非常专业的感觉,最起码自己肯定被自己迷倒了,所以今天我们就学习下这段代码,这里定义了一个函数,所以你可以嵌入到你的程序中,在任何你希望调用的地方调用它即可,使用非常的方便,代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import sys
import termios
def press_any_key_exit(msg):
# 获取标准输入的描述符
fd = sys.stdin.fileno()
# 获取标准输入(终端)的设置
old_ttyinfo = termios.tcgetattr(fd)
# 配置终端
new_ttyinfo = old_ttyinfo[:]
# 使用非规范模式(索引3是c_lflag 也就是本地模式)
new_ttyinfo[3] &= ~termios.ICANON
# 关闭回显(输入不会被显示)
new_ttyinfo[3] &= ~termios.ECHO
# 输出信息
sys.stdout.write(msg)
sys.stdout.flush()
# 使设置生效
termios.tcsetattr(fd, termios.TCSANOW, new_ttyinfo)
# 从终端读取
os.read(fd, 7)
# 还原终端设置
termios.tcsetattr(fd, termios.TCSANOW, old_ttyinfo)
if __name__ == “__main__”:
press_any_key_exit(“按任意键继续…”)
print ‘\n'

代码不多解释,看注释,这里要说一下termios模块,这个模块提供了一个接口可以控制tty终端的Io,它所有函数第一个参数需要一个文件描述符,可以是整型的文件描述符,也可以是个文件对象,因为它可以控制在终端的显示设置,常用场景就是用户在终端输入密码时不要显示出来,就跟我们用root登陆系统时系统给出输入密码提示符一样, 代码实现如下:

def getpass(prompt=”Password: “):
import termios, sys
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ECHO
try:
termios.tcsetattr(fd, termios.TCSADRAIN, new)
passwd = raw_input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd
passwd = getpass()
print passwd

这个脚本运行会提示你输入密码,输入后会打印出刚输入的密码,给这个2个例子也是说明termios的简单用法,大家可以自己运行程序去体会下。

Python 相关文章推荐
Python中生成Epoch的方法
Apr 26 Python
python实现list元素按关键字相加减的方法示例
Jun 09 Python
Python Grid使用和布局详解
Jun 30 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
Golang GBK转UTF-8的例子
Aug 26 Python
Django模板语言 Tags使用详解
Sep 09 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
导致python中import错误的原因是什么
Jul 01 Python
python实现ping命令小程序
Dec 28 Python
Python访问Redis的详细操作
Jun 26 Python
详解python3实现的web端json通信协议
Dec 29 #Python
Python正则表达式如何进行字符串替换实例
Dec 28 #Python
Python写的一个定时重跑获取数据库数据
Dec 28 #Python
Python 实现文件的全备份和差异备份详解
Dec 27 #Python
Python Queue模块详细介绍及实例
Dec 27 #Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 #Python
Python 递归函数详解及实例
Dec 27 #Python
You might like
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
php+mysqli数据库连接的两种方式
2015/01/28 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
JS获取时间的方法
2015/01/21 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
教师评优事迹材料
2014/01/10 职场文书
春风化雨观后感
2015/06/11 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
班主任培训研修日志
2015/11/13 职场文书
Python竟然能剪辑视频
2021/05/25 Python