| import argparse | |
| import csv | |
| import os | |
| import json | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("experiment") | |
| args = parser.parse_args() | |
| input_file = os.path.join(args.experiment, "log.txt") | |
| output_file = os.path.join(args.experiment, "log.csv") | |
| with open(input_file, "r") as fin, open(output_file, "w", newline="") as fout: | |
| lines = fin.readlines() | |
| keys = list(json.loads(lines[0]).keys()) | |
| if "epoch" in keys: | |
| keys.remove("epoch") | |
| header = ["epoch"] + keys | |
| writer = csv.DictWriter(fout, fieldnames=header) | |
| writer.writeheader() | |
| for epoch, line in enumerate(lines): | |
| data = json.loads(line) | |
| writer.writerow(data) | |
| print(f"Done, saved to file {output_file}") | |