iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux 下 Python 实现按任意键退出的实现方法
  • 245
分享到

Linux 下 Python 实现按任意键退出的实现方法

方法LinuxPython 2022-06-04 18:06:49 245人浏览 独家记忆
摘要

某天在群内有同学问到,在python下我用input或者raw_input都得输入完后回车才能获取到输入的值,那如何实现任意键退出暂停等功能呢,我当时也没有多想,因为接触Python时间也不算长,主要还是l

某天在群内有同学问到,在python下我用input或者raw_input都得输入完后回车才能获取到输入的值,那如何实现任意键退出暂停等功能呢,我当时也没有多想,因为接触Python时间也不算长,主要还是linux下的。

当然,windows系统下会稍微简单一些,Windows系统下如果你安装了python的环境,默认自带的一个模块叫做msvcrt,import msvcrt,然后调用msvcrt.getch()即可。接下来即Linux下实现python版本的按任意键退出。

初学Python时在总想实现一个按任意键继续/退出的程序(受.bat毒害), 奈何一直写不出来, 最近学习Unix C时发现可以通过 termiOS.h 库来实现, 尝试一下发现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("按任意键继续...")
press_any_key_exit("按任意键退出...")

其他关于 termios 的信息可以参考Linux手册:


man 3 termios

另补充一下*nix终端的三种模式(摘自<Unix-Linux编程实践教程>)

规范模式

规范模式, 也被成为cooked模式, 是用户常见的模式.驱动程序输入的字符保存在缓冲区, 并且仅在接收到回车键时才将这些缓冲的字符发送到程序.缓冲数据使驱动程序可以实现最基本的编辑功能, 被指派这些功能的特定键在驱动程序里设置, 可以通过命令stty或系统调用tcsetattr来修改

非规范模式

当缓冲和编辑功能被关闭时, 连接被成为非规范模式.终端处理器仍旧进行特定的字符处理, 例如处理Ctrl-C及换行符之间的转换, 但是编辑键将没有意义, 因此相应的输入被视为常规的数据输入 程序需要自己实现编辑功能

raw模式

当所有处理都被关闭后, 驱动程序将输入直接传递给程序, 连接被成为raw模式.

以上所述是小编给大家介绍的Linux 下 Python 实现按任意键退出的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

--结束END--

本文标题: Linux 下 Python 实现按任意键退出的实现方法

本文链接: https://www.lsjlt.com/news/14183.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python_实现按键退出程序
    前言 -使用keyboard库来监听键盘按键 # 使用keyboard库需要先安装,可以使用pip命令进行安装pip install keyboard 一、方法 1.单线程退出 使用keyboard库...
    99+
    2023-08-31
    python 开发语言
  • 怎么实现一个按Home键退出应用的功能
    怎么实现一个按Home键退出应用的功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实例如下:func exitApplication() { let app = ...
    99+
    2023-05-31
    home键
  • Android怎么实现按两次返回键退出程序
    小编给大家分享一下Android怎么实现按两次返回键退出程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Android 实现按两次返回键退出程序(两种方法)第一...
    99+
    2023-05-30
    android
  • 用Python实现写倒序输出(任意位数)
    目录Python写倒序输出(任意位数)倒序输出数字逆序输出一个数字PythonPython写倒序输出(任意位数) 倒序输出数字 这种方法最后输出的是字符而不是数字 x=int(inp...
    99+
    2024-04-02
  • PyQt5按下按键选择文件夹并显示的实现
    问题: 使用PyQt5开发桌面程序,实现功能为:按下按键,打开文件夹,选择文件夹,并将路径显示出来。 解决方法: 一、主要函数(直接能运行的代码见二) 1、选择文件夹并显示 ...
    99+
    2024-04-02
  • AndroidO实现Framework层CENTER键长按功能方法
    目录需求原理添加消息逻辑添加按键处理调用按键处理需求 设备有一个按键,我们定义为了 KEYCODE_DPAD_CENTER(23),长按 5s,实现系统自动重启。 原理 在 Fram...
    99+
    2024-04-02
  • Golang实现程序优雅退出的方法详解
    目录1. 背景2. 常见的几种平滑关闭2.1 http server 平滑关闭2.2 gRPC server 平滑关闭2.3 worker 协程平滑关闭2.4 实现 io.Close...
    99+
    2024-04-02
  • python实现输出换行的方法
    这篇文章主要介绍python实现输出换行的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python输出换行的方法:1、用转义符号【\n】,代码为【str3 = "..\n"】;2、直接用pr...
    99+
    2023-06-06
  • Android仿360市场下载按钮的实现方法
    首先来看看效果图:无论多复杂的动画我们都是可以分割成小单元的,然后分步来实现。这个动画大概分为收缩,准备,加载,完成几个部分。为此定义一个枚举类来描述view的状态。public enum Status { NORMAL, START, P...
    99+
    2023-05-31
    android 360市场 下载按钮
  • java实现输出任意整数的每一位
    目录输出任意整数的每一位非递归方式递归方式输出一个整数的每一位输出任意整数的每一位 非递归方式 import java.util.*; public class Exe{ p...
    99+
    2024-04-02
  • pyqt5主窗口按键弹出子窗口的实现
    目标:主窗口保持,通过按键弹出子窗口 步骤一:pyqt5创建主窗口,并设置按键 from PyQt5.QtWidgets import * import sys # 主窗口 cla...
    99+
    2023-02-07
    pyqt5主窗口按键弹出子窗口 pyqt5 弹出窗口
  • Android实现view拖动到任意位置的方法
    小编给大家分享一下Android实现view拖动到任意位置的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本文实现:将图片任意拖动,如果拖动到正确位置则成功,...
    99+
    2023-06-14
  • Java实现InputStream的任意拷贝方式
    Java InputStream的任意拷贝 有时候,当我们需要多次使用到同一个InputStream的时候如何实现InputStream的拷贝使用 我们可以把InputStream首...
    99+
    2024-04-02
  • Linux下实现Mysql定时任务的案例
    小编给大家分享一下Linux下实现Mysql定时任务的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!假设前提:每天晚上10点...
    99+
    2024-04-02
  • PHP实现安全退出的4种方式
    随着网络安全意识的提高,用户安全退出成为了各大网站必须要考虑的功能之一。在程序实现中,PHP作为一种流行的开发语言,安全退出也有多种实现方式。本文将介绍PHP实现安全退出的几种方式。1.利用Session实现安全退出Session用于在服务...
    99+
    2023-05-14
  • Python实现任意进制之间的转换
      在日常生活中我们频繁使用到数学的进制,如季度逢三进一,星期逢七进一;×××、小时使用12进制,每天使用24进制,每月使用30进制,分秒使用60进制,一年使用360进制等等;在编程过程中我们经常需要转换进制,虽然Python已经内置了常...
    99+
    2023-01-31
    Python
  • Python定时任务的实现方法是什么
    今天就跟大家聊聊有关Python定时任务的实现方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、定时任务定时任务,顾名思义: 定时执行的任务,可以是一段bash命令,也可以...
    99+
    2023-06-25
  • html失效按钮的实现方法
    这篇文章主要介绍html失效按钮的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!html失效按钮的实现方法:首先创建一个HTML示例文件;然后通过button标签创建按钮;最后通过设置disabled属性来规...
    99+
    2023-06-15
  • pandas实现按行选择的方法
    本篇内容介绍了“pandas实现按行选择的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录自定义行索引 按普通索引选择数据1 按普通索...
    99+
    2023-06-20
  • bootstrap组件之按钮式下拉菜单的实现方法
    小编给大家分享一下bootstrap组件之按钮式下拉菜单的实现方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、单按钮下拉菜...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作