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中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
用Python的线程来解决生产者消费问题的示例
Apr 02 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
python实现八大排序算法(2)
Sep 14 Python
微信跳一跳辅助python代码实现
Jan 05 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
Python登录注册验证功能实现
Jun 18 Python
Python中shapefile转换geojson的示例
Jan 03 Python
记录Python脚本的运行日志的方法
Jun 05 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
php获取mysql版本的几种方法小结
2008/03/25 PHP
PHP云打印类完整示例
2016/10/15 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
用Python编写简单的微博爬虫
2016/03/04 Python
python 使用get_argument获取url query参数
2017/04/28 Python
python中partial()基础用法说明
2018/12/30 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
django rest framework使用django-filter用法
2020/07/15 Python
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
社会实践自我鉴定
2013/11/07 职场文书
高中运动会广播稿
2014/01/21 职场文书
求职信结尾怎么写
2014/05/26 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
机关党员公开承诺书
2014/08/30 职场文书
个人租房协议书范本
2014/09/30 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
现货白银电话营销话术
2015/05/29 职场文书