Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich ein einzelnes Zeichen aus Benutzereingaben lesen, ohne plattformübergreifend zu blockieren oder zu widerhallen?

Wie kann ich ein einzelnes Zeichen aus Benutzereingaben lesen, ohne plattformübergreifend zu blockieren oder zu widerhallen?

Linda Hamilton
Freigeben: 2024-12-29 19:30:12
Original
491 Leute haben es durchsucht

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

Nicht blockierende Eingabe: Ein einzelnes Zeichen plattformübergreifend lesen

Ein einzelnes Zeichen aus einer Benutzereingabe lesen, ohne dass es auf dem Bildschirm wiedergegeben wird ist ein häufiger Bedarf in verschiedenen Programmierszenarien. Obwohl Windows für diesen Zweck eine spezielle Funktion bereitstellt, kann es schwierig sein, eine plattformübergreifende Lösung zu implementieren.

Plattformübergreifender Ansatz

Um diese Einschränkung zu überwinden, a Der vielseitige Ansatz unter Verwendung der ActiveState Recipes-Bibliothek bietet eine Lösung, die nahtlos unter Windows, Linux und anderen Betriebssystemen funktioniert 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()
Nach dem Login kopieren

Verwendung

Um diese Methode zu verwenden, instanziieren Sie die _Getch-Klasse und rufen ihre aufrufbare Schnittstelle auf, um ein einzelnes Zeichen aus der Benutzereingabe zu lesen:

ch = getch()
Nach dem Login kopieren

Dieser Ansatz bietet einen nicht blockierenden Eingabemechanismus, der es Entwicklern ermöglicht, ein einzelnes Zeichen vom Benutzer zu lesen, ohne den zu unterbrechen Programmablauf oder die Ausgabe auf dem Bildschirm. Es ist ein wertvolles Tool für schnelle Antworten und interaktive Befehlszeilenanwendungen.

Das obige ist der detaillierte Inhalt vonWie kann ich ein einzelnes Zeichen aus Benutzereingaben lesen, ohne plattformübergreifend zu blockieren oder zu widerhallen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage