Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich plattformübergreifend ein einzelnes Zeichen aus Benutzereingaben lesen?

Wie kann ich plattformübergreifend ein einzelnes Zeichen aus Benutzereingaben lesen?

Susan Sarandon
Susan SarandonOriginal
2024-12-21 05:10:15985Durchsuche

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

Plattformübergreifende Eingabe eines einzelnen Zeichens

Das Lesen eines einzelnen Zeichens aus der Benutzereingabe ist in verschiedenen Szenarien nützlich. Um dies zu erreichen, können Sie die folgende plattformübergreifende Lösung nutzen:

Die ActiveState Recipes-Website bietet ein umfassendes Rezept, das auf verschiedene Betriebssysteme abzielt:

  • Windows :

    • Importieren Sie das msvcrt-Modul und verwenden Sie es msvcrt.getch().
  • Linux und OSX:

    • Stellen Sie die Standardeingabe mit tty auf den Raw-Modus ein. setraw() zum Deaktivieren der Pufferung.
    • Lesen Sie ein einzelnes Zeichen mit sys.stdin.read(1).
    • Stellen Sie die ursprünglichen Einstellungen nach dem Lesen des Zeichens wieder her.

Der bereitgestellte Codeausschnitt veranschaulicht diese Implementierung:

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

Durch den einfachen Aufruf von getch() erhalten Sie ein einzelnes Zeichen ohne Pufferung oder Echo an das Terminal.

Das obige ist der detaillierte Inhalt vonWie kann ich plattformübergreifend ein einzelnes Zeichen aus Benutzereingaben lesen?. 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