from glob import glob from subprocess import run from sys import executable from numpy import mean, std from pandas import DataFrame def file_list(path): file_list = [] for fname in glob(path): file_list.append(fname) return file_list def create_dataframes(datasets): greedy = DataFrame(columns=["dataset", "distancia"]) local = DataFrame(columns=["dataset", "distancia"]) greedy["dataset"] = datasets local["dataset"] = datasets return greedy, local def process_output(results): for line in results: if line.startswith(bytes("Total distance:", encoding="utf-8")): line_elements = line.split(sep=bytes(":", encoding="utf-8")) distance = float(line_elements[1]) return distance def script_execution(filenames, greedy, local, iterations=3): script = "src/main.py" for dataset in filenames: greedy_list = [] local_list = [] for _ in range(iterations): greedy_cmd = run( [executable, script, dataset, "greedy"], capture_output=True ).stdout.splitlines() greedy_list.append(greedy_cmd) local_cmd = run( [executable, script, dataset, "local"], capture_output=True ).stdout.splitlines() local_list.append(local_cmd) greedy.loc[greedy["dataset"] == dataset, ["distancia"]] = mean(greedy_list) local.loc[local["dataset"] == dataset, ["distancia"]] = mean(local_list) if __name__ == "__main__": datasets = file_list(path="data/*.txt") greedy, local = create_dataframes(datasets) script_execution(filenames=datasets, greedy=greedy, local=local)