requests raw_input how headers example ejemplos body python loops raw-input

python - how - raw_input y timeout



request python example (5)

Esta pregunta ya tiene una respuesta aquí:

Quiero 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 nuevamente la entrada raw_input . También quiero que se rompa si el usuario ingresa algo como ''q''.



Hay una solución sencilla que no usa subprocesos (al menos no explícitamente): use select para saber cuándo hay algo que leer de stdin:

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]: aparentemente esto no funcionará en Windows , ya que la implementación subyacente de select () requiere un socket, y sys.stdin no. Gracias por el aviso, @Fookatchu.


Para la respuesta de rbp:

Para contabilizar la entrada igual a una devolución de carro simplemente agregue una condición anidada:

if rlist: s = sys.stdin.readline() print s if s == '''': s = pycreatordefaultvalue


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


Tengo un código que crea una aplicación de cuenta regresiva con un cuadro de entrada de tkinter y un botón para que puedan ingresar algo y presionar el botón. Si el temporizador se agota, la ventana de tkinter se 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 aparezca, así que imagine que ID se agrega a la lista :)

con raw_input () o input (), no es posible ya que se detiene en la sección de entrada, hasta que recibe entrada, luego continúa ...

He tomado un código del siguiente enlace: ¿ Haces un temporizador de cuenta regresiva con Python y Tkinter?

Utilicé la respuesta de Brian Oakley a este problema y agregué el 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é que lo que agregué fue un poco vago, pero funciona y es solo un ejemplo

Este código funciona para Windows con Pyscripter 3.3