-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathread_bodies.py
More file actions
54 lines (46 loc) · 1.91 KB
/
read_bodies.py
File metadata and controls
54 lines (46 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# -*- coding: utf-8 -*-
"""
Created on Mon Jan 29 10:30:53 2024
@author: miguelangel
"""
import pathlib
def leer_parámetros(fichero):
# Diccionario para almacenar los valores
valores = {}
# Palabras clave a buscar
palabras_clave = ['Mass', 'Size', 'SidRotPeriod']
# Abrir el archivo en modo lectura
with open(fichero, 'r') as archivo:
# Iterar sobre cada línea en el archivo
for linea in archivo:
# Dividir la línea en palabras
palabras = linea.split()
# Verificar si la palabra clave está en la línea
for palabra in palabras_clave:
if palabra in palabras:
# Encontrar el índice de la palabra clave
indice = palabras.index(palabra)
# Obtener el valor numérico que sigue a la palabra clave
valor = palabras[indice + 2]
# Almacenar el valor en el diccionario
valores[palabra.lower()] = float(valor)
return valores
#Lista para guardar los resultados
bodies_data = ['Planet name\tMass (kg)\tRadius (m)\tPeriod (s)']
#Lista con todos los ficheros del directorio:
listaArchivos = [f for f in pathlib.Path().glob("./bodies/todos/*.cfg")]
for archivo in listaArchivos:
resultados = leer_parámetros(archivo)
# Obtener los valores de las variables
nombre = archivo.name.split('.')[0]
masa = resultados.get('mass', None)
radio = resultados.get('size', None)
periodo = resultados.get('sidrotperiod', None)
# Imprimir los resultados
#print(f'{nombre}\t-> Masa: {masa} \t Radio: {radio} \t Periodo: {periodo}')
línea = '\t'.join(list(map(str,[nombre, masa, radio, periodo])))
bodies_data.append(línea)
# lo volcamos en un archivo de texto
with open('bodies_data.cfg', "w") as f:
for l in bodies_data:
f.write(l + '\n')