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

Daπid davidmenhur en gmail.com
Sab Oct 15 21:06:18 CEST 2011


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/
>


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