Menu Desplegable


Scripts para Python 3.10: combinar ficheros "*.log" con los resultados de docking en un solo fichero de texto.

Versión para Windows

import os
# Definir la ruta de la carpeta donde se encuentran los archivos de registro
log_folder = r"C:\\combina-logs-DOCKING\\"
# Definir el nombre del archivo donde se guardarán todos los registros
output_file = log_folder + "_todosLOGs.txt"
# Iterar sobre los archivos de registro en la carpeta
with open(output_file, "w") as outfile:
    for filename in os.listdir(log_folder):
        if filename.endswith(".log"):
            log_file = log_folder + filename
            with open(log_file, "r") as infile:
                # Leer todo el contenido del archivo
                content = infile.read()
                # Buscar la cadena de inicio y fin de los datos a extraer
                start_str = "----+---------------------+---------------------+---------------------+------+-----------------------------"
                end_str = "The random seed used during docking was 0."
                start_index = content.find(start_str)
                end_index = content.find(end_str)
                # Si se encontró la cadena de inicio y fin, extraer los datos entre ellas
                if start_index != -1 and end_index != -1:
                    data = content[start_index + len(start_str):end_index].strip()
                    # Reemplazar los caracteres de separación de columna "|" por "\t"
                    data = data.replace("|", "\t")
                    # Escribir los datos en el archivo de salida
                    outfile.write(data + "\n")

Versión para Linux

import os

# Definir la ruta de la carpeta donde se encuentran los archivos de registro
log_folder = "/home/user/combina-logs-DOCKING/"
# Definir el nombre del archivo donde se guardarán todos los registros
output_file = log_folder + "_todosLOGs.txt"
# Iterar sobre los archivos de registro en la carpeta
with open(output_file, "w") as outfile:
    for filename in os.listdir(log_folder):
        if filename.endswith(".log"):
            log_file = log_folder + filename
            with open(log_file, "r") as infile:
                # Leer todo el contenido del archivo
                content = infile.read()
                # Buscar la cadena de inicio y fin de los datos a extraer
                start_str = "----+---------------------+---------------------+---------------------+------+-----------------------------"
                end_str = "The random seed used during docking was 0."
                start_index = content.find(start_str)
                end_index = content.find(end_str)
                # Si se encontró la cadena de inicio y fin, extraer los datos entre ellas
                if start_index != -1 and end_index != -1:
                    data = content[start_index + len(start_str):end_index].strip()
                    # Reemplazar los caracteres de separación de columna "|" por "\t"
                    data = data.replace("|", "\t")
                    # Reemplazar los caracteres de retorno de carro por "\n"
                    data = data.replace("\r\n", "\n")
                    # Escribir los datos en el archivo de salida
                    outfile.write(data + "\n")