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和pyqt实现360的CLable控件
Feb 21 Python
python在Windows8下获取本机ip地址的方法
Mar 14 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
python getopt详解及简单实例
Dec 30 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
Python对数据进行插值和下采样的方法
Jul 03 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
实用函数9
2007/11/08 PHP
php db类库进行数据库操作
2009/03/19 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
php强制下载文件函数
2016/08/24 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
简述vue状态管理模式之vuex
2018/08/29 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
Python实现股市信息下载的方法
2015/06/15 Python
Python实现简单的代理服务器
2015/07/25 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
师德师风建设方案
2014/05/08 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
四年级数学教学反思
2016/02/16 职场文书
协议书格式模板
2016/03/24 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
Golang 链表的学习和使用
2022/04/19 Golang
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL