首页 > 后端开发 > Python教程 > 如何从用户输入中读取单个字符而不阻塞或回显跨平台?

如何从用户输入中读取单个字符而不阻塞或回显跨平台?

Linda Hamilton
发布: 2024-12-29 19:30:12
原创
490 人浏览过

How Can I Read a Single Character from User Input Without Blocking or Echoing Cross-Platform?

非阻塞输入:跨平台读取单个字符

从用户输入中读取单个字符而不将其回显到屏幕上是各种编程场景中的常见需求。虽然 Windows 为此目的提供了特定功能,但实现跨平台解决方案可能具有挑战性。

跨平台方法

为了克服此限制,利用 ActiveState Recipes 库的多功能方法提供了一种可以跨 Windows、Linux 和OSX:

class _Getch:
    """Gets a single character from standard input.  Does not echo to the
screen."""
    def __init__(self):
        try:
            self.impl = _GetchWindows()
        except ImportError:
            self.impl = _GetchUnix()

    def __call__(self): return self.impl()


class _GetchUnix:
    def __init__(self):
        import tty, sys

    def __call__(self):
        import sys, tty, termios
        fd = sys.stdin.fileno()
        old_settings = termios.tcgetattr(fd)
        try:
            tty.setraw(sys.stdin.fileno())
            ch = sys.stdin.read(1)
        finally:
            termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
        return ch


class _GetchWindows:
    def __init__(self):
        import msvcrt

    def __call__(self):
        import msvcrt
        return msvcrt.getch()


getch = _Getch()
登录后复制

用法

要使用此方法,请实例化 _Getch 类并调用其可调用接口以从用户的输入中读取单个字符:

ch = getch()
登录后复制

这种方法提供了一种非阻塞输入机制,允许开发者从用户无需中断程序流程或将其回显到屏幕上。它是快速响应和交互式命令行应用程序的宝贵工具。

以上是如何从用户输入中读取单个字符而不阻塞或回显跨平台?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板