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实现网络测试的脚本分享
May 26 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
python3.0 模拟用户登录,三次错误锁定的实例
Nov 02 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
python threading和multiprocessing模块基本用法实例分析
Jul 25 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
Python爬虫爬取杭州24时温度并展示操作示例
Mar 27 Python
基于python图像处理API的使用示例
Apr 03 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
python安装sklearn模块的方法详解
Nov 28 Python
Python用tkinter实现自定义记事本的方法详解
Mar 31 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的FTP学习(四)
2006/10/09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php实现解析xml并生成sql语句的方法
2018/02/03 PHP
CI框架附属类用法分析
2018/12/26 PHP
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
某公司部分笔试题
2013/11/05 面试题
高一自我鉴定
2013/12/17 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
超市理货员岗位职责
2014/07/04 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
《植树问题》教学反思
2016/03/03 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏