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函数嵌套实例
Sep 23 Python
Python实现简单的多任务mysql转xml的方法
Feb 08 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
Django模型修改及数据迁移实现解析
Aug 01 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
python程序需要编译吗
Jun 19 Python
Python logging模块原理解析及应用
Aug 13 Python
Python调用飞书发送消息的示例
Nov 10 Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 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
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Python创建xml文件示例
2017/03/22 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
2019/04/29 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
python实现视频压缩功能
2020/12/18 Python
采购文员岗位职责
2013/11/20 职场文书
护理专业自荐信范文
2014/02/26 职场文书
酒鬼酒广告词
2014/03/21 职场文书
协议书模板
2014/04/23 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
三方协议书
2015/01/27 职场文书