首页 > 后端开发 > Python教程 > 如何跨平台读取用户输入的单个字符?

如何跨平台读取用户输入的单个字符?

Susan Sarandon
发布: 2024-12-21 05:10:15
原创
969 人浏览过

How Can I Read a Single Character from User Input Cross-Platform?

跨平台获取单个字符输入

从用户输入中读取单个字符在各种场景下都很有用。为此,您可以利用以下跨平台解决方案:

ActiveState Recipes 站点提供了针对不同操作系统的综合配方:

  • Windows :

    • 导入msvcrt模块并使用msvcrt.getch().
  • Linux 和 OSX:

    • 使用 tty 将标准输入设置为原始模式。 setraw() 禁用缓冲。
    • 使用读取单个字符sys.stdin.read(1).
    • 读取字符后恢复原始设置。

提供的代码片段说明了此实现:

class _Getch:
    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() 即可获得单个字符,而无需任何缓冲或回显终端。

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

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