Python实现类似Windows pause的按任意键继续功能

林见深
林见深
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍如何在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模块的基本用法,建议读者自行运行程序以深入体会其工作原理。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表