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