Python实现类似Windows pause的按任意键继续功能
本文介绍如何在Python中实现类似Windows批处理pause命令的“按任意键继续”功能。通过调用termios模块修改终端属性,关闭规范模式和回显,实现等待用户按键后继续执行。代码包含完整函数定义及密码输入示例,适用于需要增强交互体验的Python脚本开发场景。
在Windows系统中编写批处理文件时,可以使用pause命令暂停程序执行。常见的终端提示“按任意键继续……”会在用户按下回车键后让程序继续运行。虽然这一功能的具体应用场景各有不同,但许多开发者希望在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终端I/O的接口,其所有函数的第一个参数均需要传入一个文件描述符,可以是整型的文件描述符,也可以是文件对象。利用它可以控制终端的显示设置,典型的应用场景是在用户输入密码时隐藏输入内容,这与Linux系统中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
运行该脚本会提示用户输入密码,输入完成后程序将打印出刚才输入的密码内容。提供这两个示例旨在展示termios模块的基本用法,建议读者自行运行程序以深入体会其工作原理。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









