Je veux que mon script attende que l'utilisateur appuie sur n'importe quelle touche.
Comment je fais ça?
python
wait
keyboard-input
Janusz
la source
la source
input
ne continue pas si vous appuyez sur une touche, uniquement si vous appuyez sur Entrée.Une façon de faire cela en Python 2, est d'utiliser
raw_input()
:En python3 c'est juste
input()
la source
enter
?input()
.from six.moves import input; input("Press Enter to continue...")
Sur ma boîte Linux, j'utilise le code suivant. Ceci est similaire au code que j'ai vu ailleurs (dans les anciennes FAQ python par exemple) mais ce code tourne dans une boucle serrée où ce code ne fonctionne pas et il y a beaucoup de cas de coins étranges que le code ne tient pas compte de cela le code le fait.
la source
Si vous êtes d'accord avec les commandes système, vous pouvez utiliser les éléments suivants:
Linux:
Les fenêtres:
la source
system
puis appelersys.exit(0)
.Simplement en utilisant
provoquera une SyntaxError: EOF attendue lors de l'analyse.
Utilisation simple du correctif:
la source
input
en python 2 - la fonction correcte estraw_input
. En python 2,input
est équivalent àeval(raw_input())
.Le manuel python fournit les éléments suivants:
qui peut être intégré dans votre cas d'utilisation.
la source
Cross Platform, code Python 2/3:
J'ai supprimé le fctl / non-blocking parce qu'il donnait des
IOError
s et je n'en avais pas besoin. J'utilise ce code spécifiquement parce que je veux qu'il se bloque. ;)Addenda:
J'ai implémenté cela dans un package sur PyPI avec beaucoup d'autres goodies appelés console :
la source
Je ne connais pas de méthode indépendante de la plateforme, mais sous Windows, si vous utilisez le module msvcrt, vous pouvez utiliser sa fonction getch:
mscvcrt inclut également la fonction kbhit () non bloquante pour voir si une touche a été enfoncée sans attendre (pas sûr qu'il y ait une fonction curses correspondante). Sous UNIX, il y a le paquet curses, mais je ne sais pas si vous pouvez l'utiliser sans l'utiliser pour toute la sortie d'écran. Ce code fonctionne sous UNIX:
Notez que curses.getch () renvoie l'ordinal de la touche enfoncée afin de lui donner la même sortie que je devais la transtyper.
la source
Si vous voulez attendre la saisie (afin que l'utilisateur ne frappe pas le clavier, il ne se produira pas quelque chose d'inattendu), utilisez
la source
Je suis nouveau sur python et je pensais déjà que je suis trop stupide pour reproduire les suggestions les plus simples faites ici. Il s'avère qu'il y a un écueil à savoir:
Lorsqu'un script python est exécuté depuis IDLE, certaines commandes IO semblent se comporter complètement différemment (car il n'y a en fait pas de fenêtre de terminal).
Par exemple. msvcrt.getch n'est pas bloquant et renvoie toujours $ ff. Cela a déjà été signalé il y a longtemps (voir par exemple https://bugs.python.org/issue9290 ) - et il est marqué comme corrigé, le problème semble en quelque sorte persister dans les versions actuelles de python / IDLE.
Donc, si l'un des codes publiés ci-dessus ne fonctionne pas pour vous, essayez d'exécuter le script manuellement, et NON depuis IDLE .
la source
Si vous voulez voir s'ils ont appuyé sur une touche exacte (comme dire «b»), procédez comme suit:
la source
os.system semble invoquer toujours sh, qui ne reconnaît pas les options s et n pour la lecture. Cependant la commande read peut être passée à bash:
la source