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 相关文章推荐
Python3基础之基本数据类型概述
Aug 13 Python
在Docker上开始部署Python应用的教程
Apr 17 Python
Python3遍历目录树实现方法
May 22 Python
python使用 HTMLTestRunner.py生成测试报告
Oct 20 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
python 读取DICOM头文件的实例
May 07 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
Python的pygame安装教程详解
Feb 10 Python
python实现从ftp上下载文件的实例方法
Jul 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
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
解析php中反射的应用
2013/06/18 PHP
php格式化金额函数分享
2015/02/02 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
javascript的函数
2007/01/31 Javascript
jquery的颜色选择插件实例代码
2008/10/02 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
Python自定义线程类简单示例
2018/03/23 Python
python实现QQ邮箱/163邮箱的邮件发送
2019/01/22 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
三星美国官网:Samsung美国
2017/02/06 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
党员群众路线剖析材料
2014/10/08 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python