Estoy escribiendo una clase de Python para modelar un proceso y quiero inicializar los parámetros desde un archivo, digamos 'input.dat'
. El formato del archivo de entrada se ve así.cargar parámetros desde un archivo en Python
'input.dat'
archivo:
Z0: 0 0
k: 0.1
g: 1
Delta: 20
t_end: 300
El código que he escrito es el siguiente. Funciona, pero parece redundante e inflexible. ¿Hay una mejor manera de hacer el trabajo? Como un bucle para hacer readline() y luego coincide con la palabra clave?
def load(self,filename="input.dat"):
FILE = open(filename)
s = FILE.readline().split()
if len(s) is 3:
self.z0 = [float(s[1]),float(s[2])] # initial state
s = FILE.readline().split()
if len(s) is 2:
self.k = float(s[1]) # kappa
s = FILE.readline().split()
if len(s) is 2:
self.g = float(s[1])
s = FILE.readline().split()
if len(s) is 2:
self.D = float(s[1]) # Delta
s = FILE.readline().split()
if len(s) is 2:
self.T = float(s[1]) # end time
me parece latidos de formato inicial de análisis sintáctico cualquier día. Y en la práctica han cambiado el formato para una mejor interfaz con Python. Si puede cambiar su input.dat, para parecerse más a un diccionario python bastante impreso, puede absorber todo el glob y ejecutar eval() en él. así que agrega corchetes al principio y al final, algunas comillas alrededor de las cuerdas, ¡y serás mucho más feliz! – pyInTheSky
@pyInTheSky: Yech. No 'eval()' un archivo de configuración. Use algo seguro, como 'JSON' o' ConfigParser'. –
archivos de configuración basada en Python @Tim, son * muy * útil en ciertos casos, véase mi respuesta, por ejemplo: http://stackoverflow.com/a/8527168/68707 –