Eu tenho usado a input
função como uma maneira de pausar meus scripts
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
existe uma maneira formal de fazer isso?
Eu tenho usado a input
função como uma maneira de pausar meus scripts
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
existe uma maneira formal de fazer isso?
Respostas:
Parece bom para mim (ou raw_input()
no Python 2.X). Como alternativa, você pode usar time.sleep()
se quiser pausar por um determinado número de segundos.
import time
print("something")
time.sleep(5.5) # pause 5.5 seconds
print("something")
print
para exibir o longo bloco de texto e, em seguida, input()
ou raw_input('Press <ENTER> to continue')
conforme apropriado para sua versão do Python.
input()
(ou raw_input()
no Python 2.x) para solicitar ao usuário, em vez de um atraso de tempo. Leitores rápidos não querem esperar um atraso, leitores lentos podem querer mais tempo com atraso, alguém pode ser interrompido durante a leitura e querer muito mais tempo etc. Além disso, se alguém usar muito o programa, ele / ela pode se acostumar com o modo como funciona e nem precisa ler o texto longo. É mais fácil deixar o usuário controlar por quanto tempo o bloco de texto é exibido para leitura.
Para janelas, use apenas :
import os
os.system("pause")
Então, achei que isso funcionou muito bem em meus esforços de codificação. Eu simplesmente criei uma função no início do meu programa,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
e agora posso usar a pause()
função sempre que precisar, como se estivesse escrevendo um arquivo em lotes. Por exemplo , em um programa como este:
import os
import system
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
print("Think about what you ate for dinner last night...")
pause()
Agora, obviamente, este programa não tem objetivo e é apenas para fins de exemplo, mas você pode entender exatamente o que quero dizer.
NOTA: Para Python 3, você precisará usar, input
em vez deraw_input
Eu tive uma pergunta semelhante e estava usando sinal:
import signal
def signal_handler(signal_number, frame):
print "Proceed ..."
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
Então você registra um manipulador para o sinal SIGINT e faz uma pausa esperando por qualquer sinal. Agora, de fora do seu programa (por exemplo, no bash), você pode executar kill -2 <python_pid>
, o que enviará o sinal 2 (ou seja, SIGINT) para o seu programa python. Seu programa chamará seu manipulador registrado e continuará em execução.
signal.pause
.
Eu uso o seguinte para python
2 e 3 para pausar a execução do código até o usuário pressionarENTER
import six
if six.PY2:
raw_input("Press the <ENTER> key to continue...")
else:
input("Press the <ENTER> key to continue...")
Conforme apontado pelos comentários de mhawke e steveha , a melhor resposta para essa pergunta exata seria:
Para um longo bloco de texto, é melhor usar
input('Press <ENTER> to continue')
(ouraw_input('Press <ENTER> to continue')
no Python 2.x) para solicitar ao usuário, em vez de um atraso de tempo. Leitores rápidos não querem esperar um atraso, leitores lentos podem querer mais tempo com atraso, alguém pode ser interrompido durante a leitura e querer muito mais tempo etc. Além disso, se alguém usar muito o programa, ele / ela pode se acostumar com o modo como funciona e nem precisa ler o texto longo. É mais fácil deixar o usuário controlar por quanto tempo o bloco de texto é exibido para leitura.
Muito simples:
raw_input("Press Enter to continue ...")
exit()
NameError: name 'raw_input' is not defined
Print ("This is how you pause")
input()
Eu acho que gosto deste soln.
import getpass
getpass.getpass("Press Enter to Continue")
Ele oculta o que o usuário digita, o que ajuda a esclarecer que a entrada não é usada aqui.
Mas esteja atento à plataforma OSX, pois exibe uma chave que pode ser confusa.
Provavelmente, a melhor solução seria fazer algo semelhante ao módulo getpass, sem fazer uma read -s
ligação. Talvez fazer com que a cor fg corresponda à bg?
Por esse método, você pode retomar seu programa pressionando qualquer tecla especificada que você especificou:
import keyboard
while True:
key = keyboard.read_key()
if key == 'space': # you can put any key you like instead of 'space'
break
mesmo método, mas de outra maneira:
import keyboard
while True:
if keyboard.is_pressed('space'): # same, you can put any key you like instead of 'space'
break
Nota: você pode instalar o keyboard
módulo simplesmente escrevendo isso em seu shell ou cmd:
pip install keyboard
import os, sys
if sys.platform == 'win32':
os.system('pause')
else:
input('Press any key to continue...')