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

크로스 플랫폼을 차단하거나 에코하지 않고 사용자 입력에서 단일 문자를 어떻게 읽을 수 있습니까?

Linda Hamilton
풀어 주다: 2024-12-29 19:30:12
원래의
491명이 탐색했습니다.

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

비차단 입력: 단일 문자 크로스 플랫폼 읽기

화면에 반영되지 않고 사용자 입력에서 단일 문자 읽기 다양한 프로그래밍 시나리오에서 공통적으로 필요한 사항입니다. Windows는 이러한 목적을 위해 특정 기능을 제공하지만 크로스 플랫폼 솔루션을 구현하는 것이 어려울 수 있습니다.

크로스 플랫폼 접근 방식

이러한 제한을 극복하려면 ActiveState Recipes 라이브러리를 활용하는 다용도 접근 방식은 Windows, Linux 및 Windows에서 원활하게 작동하는 솔루션을 제공합니다. 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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿