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的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
Python实现带百分比的进度条
Jun 28 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
python+selenium识别验证码并登录的示例代码
Dec 21 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
python GUI图形化编程wxpython的使用
Jul 19 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
Python中函数的返回值示例浅析
Aug 28 Python
python爬虫中抓取指数的实例讲解
Dec 01 Python
python如何调用php文件中的函数详解
Dec 29 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
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
ES6扩展运算符的用途实例详解
2017/08/20 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
用Python读取几十万行文本数据
2018/12/24 Python
kafka-python批量发送数据的实例
2018/12/27 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Python发展简史 Python来历
2019/05/14 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
python中count函数简单用法
2020/01/05 Python
python绘制动态曲线教程
2020/02/24 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
2016年校园重阳节广播稿
2015/12/18 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript