Limpiar el buffer del teclado o ignorarlo o algo

Nacho [eXr] Nacho.eXr en gmail.com
Lun Sep 20 19:24:42 CEST 2004


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
>




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