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读写excel的方法
Nov 18 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
基于python select.select模块通信的实例讲解
Sep 21 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
pandas series序列转化为星期几的实例
Apr 11 Python
pandas 小数位数 精度的处理方法
Jun 09 Python
解决pycharm无法识别本地site-packages的问题
Oct 13 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 24 Python
Python数据处理的三个实用技巧分享
Apr 01 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 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中的实现trim函数代码
2007/03/19 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
python实现DES加密解密方法实例详解
2015/06/30 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
如何基于Python创建目录文件夹
2019/12/31 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
Django限制API访问频率常用方法解析
2020/10/12 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
终止劳动合同协议书
2014/04/14 职场文书
监察建议书格式
2014/05/19 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
普通党员个人整改措施
2014/10/27 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
食品药品安全责任书
2015/05/11 职场文书
关于环保的广播稿
2015/12/17 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang