Heim >Backend-Entwicklung >Python-Tutorial >Wie liest man ein einzelnes Zeichen aus Benutzereingaben auf verschiedenen Plattformen?

Wie liest man ein einzelnes Zeichen aus Benutzereingaben auf verschiedenen Plattformen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-18 09:21:15632Durchsuche

How to Read a Single Character from User Input Across Different Platforms?

Ein einzelnes Zeichen aus Benutzereingaben plattformübergreifend lesen

In verschiedenen Programmierszenarien ist es notwendig, ein einzelnes Zeichen aus Benutzereingaben zu lesen ohne Pufferung oder Echo. Diese Funktionalität ähnelt der bekannten getch()-Funktion in Windows, es ist jedoch ein universeller Ansatz wünschenswert, der auf mehreren Plattformen funktioniert.

Lösung:

Um dies zu erreichen Für das plattformübergreifende Lesen von Zeichen können Sie ein von der Community betriebenes Python-Rezept von der Website „ActiveState Recipes“ verwenden: „getch()-ähnliches ungepuffertes Lesen von Zeichen von stdin unter Windows und Unix.“ Dieses Rezept stellt eine klassenbasierte Implementierung bereit, die sowohl für Windows- als auch für Unix-basierte Systeme geeignet ist.

Implementierung:

Der folgende Codeausschnitt demonstriert die Implementierung des Cross- Klasse zum Lesen von Plattformzeichen:

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()

Um diese Klasse zu nutzen, instanziieren Sie einfach die _Getch-Klasse und rufen Sie sie auf. Das Ergebnis ist das vom Benutzer eingegebene einzelne Zeichen ohne Pufferung oder Echo. Zum Beispiel:

result = getch()

Schlussfolgerung:

Dieser plattformübergreifende Ansatz zum Lesen von Zeichen ist weit verbreitet in Situationen, in denen sofortige Benutzereingaben erforderlich sind, wie z. B. das Erfassen von Tastenanschlägen Terminalanwendungen oder die Implementierung interaktiver Benutzeroberflächen.

Das obige ist der detaillierte Inhalt vonWie liest man ein einzelnes Zeichen aus Benutzereingaben auf verschiedenen Plattformen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn