Biblioteca con scripts sencillos de Python

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



Última modificación: