Je veux que mon script attende que l'utilisateur appuie sur une touche.
Comment dois-je m'y prendre ?
En Python 3, il n'existe pas de raw_input()
. Il suffit donc d'utiliser :
input("Press Enter to continue...")
En Python 2, vous devriez utiliser raw_input()
, car input(prompt)
est équivalent à eval(raw_input(prompt))
:
raw_input("Press Enter to continue...")
Cependant, cette méthode ne fait qu'attendre que l'utilisateur appuie sur la touche Entrée. Vous devriez donc utiliser msvcrt ((Windows/DOS uniquement) Le module msvcrt vous donne accès à un certain nombre de fonctions de la bibliothèque d'exécution Microsoft Visual C/C++ (MSVCRT)) :
import msvcrt as m
def wait():
m.getch()
Ceci devrait attendre une pression sur une touche.
Une façon de faire cela en Python 2, est d'utiliser raw_input()
:
raw_input("Press Enter to continue...")
En Python3, c'est juste input()
.
Le [manuel] python[1] fournit les éléments suivants :
import termios, fcntl, sys, os
fd = sys.stdin.fileno()
oldterm = termios.tcgetattr(fd)
newattr = termios.tcgetattr(fd)
newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
termios.tcsetattr(fd, termios.TCSANOW, newattr)
oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
try:
while 1:
try:
c = sys.stdin.read(1)
print "Got character", repr(c)
except IOError: pass
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
qui peut être intégré à votre cas d'utilisation.
[1] : http://docs.python.org/faq/library#how-do-i-get-a-single-keypress-at-a-time