Quero que meu script aguarde até que o usuário pressione qualquer tecla.
Como faço isso?
python
wait
keyboard-input
Janusz
fonte
fonte
input
não continua se qualquer tecla for pressionada, apenas se pressionar Enter.Uma maneira de fazer isso no Python 2 é usar
raw_input()
:Em python3 é apenas
input()
fonte
enter
?input()
.from six.moves import input; input("Press Enter to continue...")
Na minha caixa linux, eu uso o seguinte código. Isso é semelhante ao código que eu já vi em outros lugares (nas FAQs antigas sobre python, por exemplo), mas esse código gira em um loop apertado, onde esse código não existe e há muitos casos de canto estranhos em que o código não explica isso. código faz.
fonte
Se você concorda com os comandos do sistema, pode usar o seguinte:
Linux:
Janelas:
fonte
system
e depois ligarsys.exit(0)
.Simplesmente usando
causará um SyntaxError: EOF esperado durante a análise.
Uso de correção simples:
fonte
input
no python 2 - a função correta éraw_input
. No python 2,input
é equivalente aeval(raw_input())
.O manual python fornece o seguinte:
que pode ser acumulado no seu caso de uso.
fonte
Plataforma cruzada, código Python 2/3:
Eu removi o material fctl / non-blocking porque estava dando
IOError
s e não precisava dele. Estou usando esse código especificamente porque quero que ele bloqueie. ;)Termo aditivo:
Eu implementei isso em um pacote no PyPI com muitos outros itens chamados console :
fonte
Não conheço uma maneira independente de fazê-lo, mas no Windows, se você usar o módulo msvcrt, poderá usar a função getch:
O mscvcrt também inclui a função kbhit () sem bloqueio para verificar se uma tecla foi pressionada sem aguardar (não tenho certeza se há uma função de maldições correspondente). No UNIX, existe o pacote maldições, mas não tenho certeza se você pode usá-lo sem usá-lo para toda a saída da tela. Este código funciona no UNIX:
Observe que curses.getch () retorna o ordinal da tecla pressionada, para que ela tenha a mesma saída que eu tive para convertê-la.
fonte
Se você deseja aguardar a entrada (para que o usuário toque no teclado não faça com que algo não intencional aconteça), use
fonte
Eu sou novo no python e já estava pensando que sou burro demais para reproduzir as sugestões mais simples feitas aqui. Acontece que há uma armadilha que se deve saber:
Quando um script python é executado a partir do IDLE, alguns comandos de E / S parecem se comportar completamente diferentes (como na verdade não há janela de terminal).
Por exemplo. O msvcrt.getch é sem bloqueio e sempre retorna $ ff. Isso já foi relatado há muito tempo (veja, por exemplo, https://bugs.python.org/issue9290 ) - e está marcado como corrigido, de alguma forma o problema parece persistir nas versões atuais do python / IDLE.
Portanto, se algum código postado acima não funcionar, tente executar o script manualmente e NÃO a partir do IDLE .
fonte
Se você quiser ver se eles pressionaram uma tecla exata (como digamos 'b'), faça o seguinte:
fonte
o os.system parece sempre chamar sh, que não reconhece as opções s e n para leitura. No entanto, o comando read pode ser passado para o bash:
fonte