Script de Python para rescatar de todos los archivos con extensión ".txt" en la ruta "D:\aaa" los datos de la columna "Free energy, Kcal/mol" y juntarlos en un fichero de texto separado por columnas, de modo que la primera fila de cada columna contenga el nombre del fichero *.txt de partida.
import os
import pandas as pd
def leer_archivos_y_extraer_columna(ruta_entrada, extension):
# Diccionario para almacenar los datos de la columna "Free energy, Kcal/mol" por archivo
datos_por_archivo = {}
# Lista para almacenar los nombres de los archivos
nombres_archivos = []
# Recorremos los archivos en la ruta de entrada
for archivo in os.listdir(ruta_entrada):
# Verificamos si el archivo tiene la extensión deseada
if archivo.endswith(extension):
# Construimos la ruta completa al archivo
ruta_completa = os.path.join(ruta_entrada, archivo)
try:
# Leemos el archivo y almacenamos la columna "Free energy, Kcal/mol" en el diccionario
df = pd.read_csv(ruta_completa, sep='\t')
if "Free energy, Kcal/mol" in df.columns:
datos_por_archivo[archivo] = df["Free energy, Kcal/mol"]
nombres_archivos.append(archivo)
else:
print(f"La columna 'Free energy, Kcal/mol' no existe en el archivo '{archivo}'. Saltando este archivo.")
except Exception as e:
print(f"No se pudo leer el archivo '{archivo}': {e}")
return datos_por_archivo, nombres_archivos
def guardar_a_archivo(datos_por_archivo, nombres_archivos, ruta_salida):
# Creamos un DataFrame a partir del diccionario de datos
df_resultado = pd.DataFrame(datos_por_archivo)
# Reemplazamos los encabezados de columna por los nombres de archivo correspondientes
df_resultado.columns = nombres_archivos
# Guardamos el DataFrame en un archivo separado por tabuladores
df_resultado.to_csv(ruta_salida, sep='\t', index=False)
# Rutas de entrada y salida
ruta_entrada = r"D:\aaa"
ruta_salida = r"D:\aaa\_todas-columnas_Free-energy-Kcal-mol.txt"
# Extension de los archivos a leer
extension = ".txt"
# Leemos los archivos y extraemos los valores de la columna "Free energy, Kcal/mol"
datos_por_archivo, nombres_archivos = leer_archivos_y_extraer_columna(ruta_entrada, extension)
if datos_por_archivo:
# Si se encontraron datos, los guardamos en el archivo de salida
guardar_a_archivo(datos_por_archivo, nombres_archivos, ruta_salida)
print("Proceso completado. Se ha generado el archivo de salida en:", ruta_salida)
else:
print("No se encontraron datos para procesar.")