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