>백엔드 개발 >파이썬 튜토리얼 >사용자 입력 크로스 플랫폼에서 단일 문자를 어떻게 읽을 수 있습니까?

사용자 입력 크로스 플랫폼에서 단일 문자를 어떻게 읽을 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-21 05:10:15988검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.