Como faço para fazer python esperar por uma tecla premida

Quero que o meu script espere até que o utilizador carregue em qualquer tecla.

Como é que eu faço isso?

Solução

Em Python 3, não existe raw_input(). Então, basta utilizar:

input("Press Enter to continue...")

Em Python 2, você deve utilizar raw_input(), pois input(prompt) é equivalente a eval(raw_input(prompt)):

raw_input("Press Enter to continue...")

Isto só espera que um usuário pressione enter, então você pode querer usar msvcrt ((apenas Windows/DOS) O módulo msvcrt lhe dá acesso a várias funções na Biblioteca de Tempo de Execução do Microsoft Visual C/C++ (MSVCRT)):

import msvcrt as m
def wait():
    m.getch()

Isto deve esperar por uma tecla de pressão.

Comentários (7)

Uma maneira de fazer isso em Python 2, é utilizar raw_input():

raw_input("Press Enter to continue...")

Em python3 it's apenas input()

Comentários (4)

O píton manual fornece o seguinte:

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)

que pode ser enrolado no seu estojo de uso.

Comentários (3)