[Python-es] Transformar una cadena de texto en nombre de constante

Francesc Gispert Sanchez francesc_gispert_11.12 en hotmail.com
Sab Oct 15 21:24:29 CEST 2011


Muchas gracias por la pronta respuesta. No conocía la existencia de
eval(), y mucho menos la de ConfigParser. Aunque la línea que me has
indicado ya ha solucionado mi problema, echaré una ojeada a la
documentación para ver cómo funciona esta biblioteca.


Atentamente,

Francesc Gispert


El sáb, 15-10-2011 a las 21:06 +0200, Daπid escribió:
> En primer lugar, para almacenar y recuperar variables de ficheros,
> Python tiene la biblioteca ConfigParser. Mírate la documentación, a
> ver si te proporciona todo lo que necesitas.
> 
> Verás que a la hora de recuperar números almacenados (ej: 125), se usa
> un eval(). En tu código:
> 
> parametros.append(eval(linea[:-1]))
> 
> Esto evalúa la cadena como si fuera código.
> 
> 
> Espero que te sirva.
> 
> 2011/10/15 Francesc Gispert Sanchez <francesc_gispert_11.12 en hotmail.com>:
> > Estimados/as señores/as,
> >
> > Estoy haciendo una versión sencilla del videojuego Space Invaders con
> > PyGame para practicar (aún soy muy novato en esto de la programación) y
> > he hecho un pequeño script que permite crear un documento de texto plano
> > donde se almacena la configuración de las teclas que se utilizarán para
> > los controles.
> >
> > Pero los nombres de las teclas se almacenan por el nombre que tienen las
> > constantes en PyGame (por ejemplo, K_RETURN para la tecla 'Enter' o
> > K_SPACE para la barra espaciadora). Pero a la hora de leer el archivo,
> > si lo hago con un bucle 'for' del estilo:
> >
> > parametros = []
> > for linea in archivo:
> >    if linea == "":
> >        break
> >    parametros.append(linea[:-1])
> >
> > Los distintos parámetros se almacenan en forma de cadenas de texto (por
> > ejemplo, parametros = ["K_RETURN", "K_SPACE"] ). Por eso, cuando quiero
> > comprobar si la tecla que pulsa el jugador concuerda con estas, detecta
> > que son distintas, porque las constantes de pygame.locals: K_RETURN,
> > K_SPACE, etc., son en realidad números (creo). Entonces, si asigno la
> > constante DISPARAR (por ejemplo) a lo que en el archivo de texto es la
> > cadena "K_RETURN", yo lo que quiero en realidad es que se asigne el
> > número 125 (me lo acabo de inventar, no sé si es este), el que
> > corresponde a la constante K_RETURN, a esta constante. ¿Hay alguna forma
> > más o menos sencilla de conseguirlo?
> >
> > No sé si me he expresado bien, si es necesario puedo poner trozos de
> > código de ejemplo. Muchas gracias por vuestra ayuda.
> >
> >
> > Atentamente,
> >
> > Francesc Gispert
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org
> > http://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
> >
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
> 




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