Maison > développement back-end > Tutoriel Python > Comment puis-je lire un seul caractère à partir d'une entrée utilisateur multiplateforme ?

Comment puis-je lire un seul caractère à partir d'une entrée utilisateur multiplateforme ?

Susan Sarandon
Libérer: 2024-12-21 05:10:15
original
966 Les gens l'ont consulté

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

Obtenir une saisie d'un seul caractère multiplateforme

La lecture d'un seul caractère à partir de la saisie de l'utilisateur est utile dans divers scénarios. Pour y parvenir, vous pouvez utiliser la solution multiplateforme suivante :

Le site ActiveState Recipes propose une recette complète qui cible différents systèmes d'exploitation :

  • Windows :

    • Importez le module msvcrt et utilisez msvcrt.getch().
  • Linux et OSX :

    • Définissez l'entrée standard en mode brut à l'aide de tty. setraw() pour désactiver la mise en mémoire tampon.
    • Lisez un seul caractère en utilisant sys.stdin.read(1).
    • Restaurez les paramètres d'origine après avoir lu le caractère.

L'extrait de code fourni illustre cette implémentation :

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()
Copier après la connexion

Appeler simplement getch() vous obtiendra un seul caractère sans aucune mise en mémoire tampon ni écho vers le terminal.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal