Limpiar el buffer del teclado o ignorarlo o algo

Nacho [eXr] Nacho.eXr en gmail.com
Mar Sep 21 13:58:57 CEST 2004


En efecto y según la documentación de Python el método flush() es el
que vacía el sys.stdin, pero yo lo tengo así al finalizar:

            print " - Fin del procesado."
            sys.stdin.flush()
            sys.exit(0)

Hice pruebas con un código simple:

  import sys, time
  time.sleep(10)
  print 'Fin.'
  sys.stdin.flush()
  sys.exit(0)

y escribiendo "dir" + Intro hace un dir nada más terminar. He visto
códigos en C++ que utilizan fflush() pero se ve que en Python funciona
de otra forma, no?

Utilizando: Python 2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32
bit (Intel)] on win32



On Tue, 21 Sep 2004 12:23:48 +0200, Ernesto Revilla <erny en sicem.biz> wrote:
> 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
> 
> _______________________________________________
> 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