Limpiar el buffer del teclado o ignorarlo o algo

Ernesto Revilla erny en sicem.biz
Mar Sep 21 12:23:48 CEST 2004


Vale. Lo he probado con Python 2.3, pero creo mejor es lo que han 
comentado (no había visto el método al escribir sys.stdin  en mi 
Pythonwin, no me aparecía el método flush, aunque lo conocía para la 
salida.)

Erny


Nacho [eXr] escribió:

>Con el sys.stdin.buffer='' devuelve:
>
>Traceback (most recent call last):
>  File "D:\dev\Proyectos\exr.py", line 574, in ?
>    if __name__ == "__main__": main2()
>  File "D:\dev\Proyectos\exr.py", line 558, in main2
>    sys.stdin.buffer=''
>AttributeError: 'file' object has no attribute 'buffer'
>
>
>El problema mejor explicado con un ejemplo, que se verá más claro:
>
>Despues de una petición de entrada, por ej: u = raw_input(" Usuario? ")
>el programa ejecuta una serie de procesos y bla bla bla. Supongamos
>que durante ese tiempo pulso algunas teclas, en este caso unas cuantas
>veces "asdf" y la tecla Intro. Seguidamente pulso "dir" y de nuevo
>Intro. El programa termina de procesar y sale con un sys.exit(0)
>normal y corriente. Al terminar el programa sale esto:
>
>D:\dev\Proyectos>herramusuario.py
> Usuario? user
> - Procesando . . .
> - Fin del procesado.
>
>D:\dev\Proyectos>asdfasdfasdfasdf
>'asdfasdfasdfasdf' is not recognized as an internal or external command
>operable program or batch file.
>
>D:\dev\Proyectos>dir
> Volume in drive D is HD1
> Volume Serial Number is XXXX-XXXX
> etc...
>
>D:\dev\Proyectos>_
>
>Es decir, se ha ejecutado el buffer de teclado. Y esto ocurre tanto si
>sale del programma como si se pide otra entrada de datos. He buscado y
>rebuscado por Google alguna forma de borrar el buffer de entrada, he
>intentado usar sys.stdin.flush() pero tampoco. Parece algo simple pero
>me está costando más de lo q esperaba :/
>
>On Mon, 20 Sep 2004 19:02:36 +0200, Ernesto Revilla <erny en sicem.biz> wrote:
>  
>
>>Hola,
>>
>>para esos datos, no entiendo dónde puede estar el aporreo. Educación de
>>usuarios.
>>
>>en todo caso, te recomiendo leer todos los datos primero, y después
>>hacer la conexión.
>>
>>Erny
>>
>>puedes probar si un  import sys; sys.stdin.buffer=''    te sirve.
>>
>>Nacho [eXr] escribió:
>>
>>
>>
>>    
>>
>>>Buenas,
>>>
>>>tengo un script que lee varias variables por teclado, el problema
>>>reside en que despues de leer la primera variable si el ususario
>>>"sigue aporreando" el teclado cuando llega la segunda entrada de datos
>>>se llena con este "aporreo", y es más grave cuando al salir del
>>>programa en la línea de comandos aparece todo lo escrito despues:
>>>
>>>.
>>>.
>>>.
>>>s = raw_input("Servidor: ")
>>>pt = raw_input("Puerto: ")
>>>Conecta(s,pt)
>>>u = raw_input("Usuario: ")
>>>p = getpass.getpass("Clave: ")
>>>Login(u,p)
>>>.
>>>.
>>>.
>>>sys.exit(0)
>>>
>>>¿Como podría hacer para limpiar el buffer del teclado o similar?
>>>
>>>Gracias
>>>_______________________________________________
>>>Python-es mailing list
>>>Python-es en aditel.org
>>>http://listas.aditel.org/listinfo/python-es
>>>
>>>
>>>
>>>      
>>>
>>---
>>avast! Antivirus: Saliente mensaje limpio.
>>Base de datos de Virus (VPS): 0439-0, 20/09/2004
>>Comprobado en: 20/09/2004 19:02:38
>>avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
>>http://www.avast.com
>>
>>_______________________________________________
>>Python-es mailing list
>>Python-es en aditel.org
>>http://listas.aditel.org/listinfo/python-es
>>
>>    
>>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>
>  
>




---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0439-0, 20/09/2004
Comprobado en: 21/09/2004 12:23:49
avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
http://www.avast.com




Más información sobre la lista de distribución Python-es