que quieren hacer un raw_input('Enter something: .')
. Quiero que duerma durante 3 segundos y, si no hay entrada, cancélelo y ejecute el resto del código. Luego, el código realiza un bucle e implementa el raw_input
nuevamente. También quiero que se rompa si el usuario ingresa algo como 'q'.raw_input y tiempo de espera
Respuesta
Hay muchas maneras de hacer esto en Unix:
Keyboard input with timeout in Python
pero es probable que no quiere que ...?
necesito estar lejos de las señales. Las señales no puedo trabajar con mi programa porque tengo a tantas llamadas a otros scripts de Python y os.system comandos que no puedo llevar la cuenta de qué programa I "m. Necesito ser que el programa pide un usuario para una entrada y después de 3 segundos, si no hay entrada de proceder y luego hacer la pregunta otra vez. al final quiero que se ejecute siempre si hay tehre entrada. – ykmizu
Hay una solución fácil que no utiliza hilos (al menos no explícitamente): utilizar select saber cuando hay algo que se lee de la entrada estándar:
import sys
from select import select
timeout = 10
print "Enter something:",
rlist, _, _ = select([sys.stdin], [], [], timeout)
if rlist:
s = sys.stdin.readline()
print s
else:
print "No input. Moving on..."
Editar [0]: al parecer esta won't work on Windows, ya que la implementación subyacente de select() requiere un socket y sys.stdin no. Gracias por el aviso, @Fookatchu.
no se puede utilizar esta causa mis computadoras de la compañía están utilizando 2.3.3 .. Gracias. – ykmizu
El módulo 'select' está en python 2.3. – habnabit
ykmizu: como señaló Aaron, el módulo de selección está disponible en Python 2.3.3: http://docs.python.org/release/2.3.3/lib/module-select.html – rbp
Si está trabajando en Windows puede intentar lo siguiente:
import sys, time, msvcrt
def readInput(caption, default, timeout = 5):
start_time = time.time()
sys.stdout.write('%s(%s):'%(caption, default));
input = ''
while True:
if msvcrt.kbhit():
chr = msvcrt.getche()
if ord(chr) == 13: # enter_key
break
elif ord(chr) >= 32: #space_char
input += chr
if len(input) == 0 and (time.time() - start_time) > timeout:
break
print '' # needed to move to next line
if len(input) > 0:
return input
else:
return default
# and some examples of usage
ans = readInput('Please type a name', 'john')
print 'The name is %s' % ans
ans = readInput('Please enter a number', 10)
print 'The number is %s' % ans
Esto funcionará bien desde la línea de comandos, pero no funcionará cuando se ejecute dentro de Eclipse, no estoy seguro de cómo obtener msvcrt leyendo el teclado desde dentro de Eclipse. – Paul
Nunca utilicé Eclipse para Python, pero supongo que es lo mismo que sublimtext, la consola incorporada no es una implementación adecuada, solo una salida. Estoy seguro de que puede configurar Eclipse para que use un terminal o cmd real en ese caso, de modo que pueda ingresar datos en él. – erm3nda
@Paul - esto no funciona para mí en Windows. Estoy ejecutando su código, literalmente, con la excepción de cambiar la sintaxis de Imprimir a py3 y agregar un stdout.flush(). Windows7, python3.6 – mike
Para la respuesta de RBP:
Para tener en cuenta de entrada igual a un retorno de carro sólo tiene que añadir una condición anidada:
if rlist:
s = sys.stdin.readline()
print s
if s == '':
s = pycreatordefaultvalue
tengo algo de código que hace que una aplicación de cuenta atrás con un cuadro de entrada tkinter y el botón para que puedan entrar en algo y pulsa el botón, si el tiempo llega a cero el viento tkinter ow cierra y les dice que se les acabó el tiempo. Creo que la mayoría de las otras soluciones a este problema no tienen una ventana que aparece, así que ID pensado agregar a la lista :)
con raw_input() o entrada(), no es posible porque se detiene en el sección de entrada, hasta que recibe la entrada, entonces se lleva a cabo ...
yo he tomado algo de código desde el siguiente enlace: Making a countdown timer with Python and Tkinter?
utilicé la respuesta de Brian Oakley a este problema y ha añadido la entrybox etc.
import tkinter as tk
class ExampleApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
def well():
whatis = entrybox.get()
if whatis == "": # Here you can check for what the input should be, e.g. letters only etc.
print ("You didn't enter anything...")
else:
print ("AWESOME WORK DUDE")
app.destroy()
global label2
label2 = tk.Button(text = "quick, enter something and click here (the countdown timer is below)", command = well)
label2.pack()
entrybox = tk.Entry()
entrybox.pack()
self.label = tk.Label(self, text="", width=10)
self.label.pack()
self.remaining = 0
self.countdown(10)
def countdown(self, remaining = None):
if remaining is not None:
self.remaining = remaining
if self.remaining <= 0:
app.destroy()
print ("OUT OF TIME")
else:
self.label.configure(text="%d" % self.remaining)
self.remaining = self.remaining - 1
self.after(1000, self.countdown)
if __name__ == "__main__":
app = ExampleApp()
app.mainloop()
sé lo que he añadido era un poco flojo pero funciona y es sólo un ejemplo
Este código funciona para Windows con Pyscripter 3.3
- 1. Tiempo de espera agotado - Tiempo de espera agotado
- 2. Diferencias entre `input` y` raw_input`
- 3. tiempo de espera de membresía y tiempo de espera de sesión
- 4. HttpWebRequest Tiempo de espera
- 5. NSURLConnection tiempo de espera
- 6. WCF ¿Tiempo de espera?
- 7. ¿Qué significa "tiempo de espera" y "tiempo de espera abierto" en Faraday?
- 8. tiempo de espera stringwithcontentsofurl
- 9. NSURLConnection tiempo de espera?
- 10. ¿Cómo diferenciar cuándo espera (tiempo de espera prolongado) salir para notificar o tiempo de espera?
- 11. Tiempo de espera de QNetworkAccessManager
- 12. Tiempo de espera de Python
- 13. java.net.SocketTimeoutException: tiempo de espera agotado
- 14. Android GPS tiempo de espera
- 15. exec() con tiempo de espera
- 16. Tarea fromAsync tiempo de espera
- 17. feedparser con tiempo de espera
- 18. Tiempo de espera para BackgroundWorker
- 19. Tiempo de espera con jQuery.get()
- 20. Tiempo de espera para thread.join()
- 21. MySQL: "bloqueo de tiempo de espera de espera excedido"
- 22. hibernate Excedido el tiempo de espera de espera de bloqueo;
- 23. Tiempo de espera de sesión de IIS frente a tiempo de espera de sesión de ASP.NET
- 24. Las diferencias en las formas de autenticación de tiempo de espera y tiempo de espera de la sesión
- 25. Imagen de recuperación y tiempo de espera - Contenido externo. Javascript
- 26. Error de tiempo de espera aleatorio con Pika y gevent
- 27. Programáticamente interrumpir raw_input
- 28. lo que hay diferencias entre las "formas de tiempo de espera", "userIsOnlineTimeWindow pertenencia" y "tiempo de espera sessionState"
- 29. función raw_input en Python
- 30. Rubí Tiempo de espera :: tiempo de espera no hace excepción por incendio y no vuelve lo documentado
relacionados: [Python 3 temporizadas de entrada/15528939] (https: // stackoverflow.com/questions/15528939/python-3-timed-input) – n611x007
relacionados: [Tiempo de espera en un /492519](https://stackoverflow.com/questions/492519/timeout-on-a-python- función de Python llamada la función de llamada) – n611x007
relacionados: [Cómo establecer límite de tiempo en /2933399](https://stackoverflow.com/questions/2933399/how-to-set-time-limit-on-input entrada) – n611x007