Maison >développement back-end >Tutoriel Python >Comment puis-je lire un seul caractère à partir d'une entrée utilisateur sans bloquer ni faire écho sur plusieurs plates-formes ?

Comment puis-je lire un seul caractère à partir d'une entrée utilisateur sans bloquer ni faire écho sur plusieurs plates-formes ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-29 19:30:12495parcourir

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

Entrée non bloquante : lecture d'un seul caractère multiplateforme

Lecture d'un seul caractère à partir d'une entrée utilisateur sans qu'il soit renvoyé à l'écran est un besoin courant dans divers scénarios de programmation. Bien que Windows fournisse une fonction spécifique à cet effet, il peut être difficile de mettre en œuvre une solution multiplateforme.

Approche multiplateforme

Pour surmonter cette limitation, un L'approche polyvalente utilisant la bibliothèque ActiveState Recipes offre une solution qui fonctionne de manière transparente sous Windows, Linux et 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()

Utilisation

Pour utiliser cette méthode, instanciez la classe _Getch et invoquez son interface appelable pour lire un seul caractère à partir de l'entrée de l'utilisateur :

ch = getch()

Cette approche fournit un mécanisme de saisie non bloquant, permettant aux développeurs de lire un seul caractère de l'utilisateur sans interrompre le déroulement du programme ou le faisant écho à l'écran. C'est un outil précieux pour des réponses rapides et des applications interactives en ligne de commande.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn