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.")