From 1ef7e8beeacb923f319b8418967b2fb1b2542f4b Mon Sep 17 00:00:00 2001 From: Lukas Winkler Date: Wed, 11 Sep 2019 11:32:18 +0200 Subject: [PATCH] use save path relative to script file --- simulation_list.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/simulation_list.py b/simulation_list.py index 2b5e5ce..1868f7b 100644 --- a/simulation_list.py +++ b/simulation_list.py @@ -1,4 +1,5 @@ import json +import os import pickle from typing import List @@ -20,24 +21,30 @@ class SimulationList: def append(self, value: Simulation): self.simlist.append(value) - def pickle_save(self, filebasename="save"): - with open(f'{filebasename}.pickle', 'wb') as file: + def save_path(self, extension): + script_dir = os.path.dirname(__file__) + rel_path = "save" + extension + return os.path.join(script_dir, rel_path) + + def pickle_save(self): + with open(self.save_path(".pickle"), 'wb') as file: pickle.dump(self.simlist, file) @classmethod - def pickle_load(cls, filebasename="save"): - with open(f'{filebasename}.pickle', 'rb') as file: + def pickle_load(cls): + tmp = cls() + with open(cls.save_path(tmp, ".pickle"), 'rb') as file: return cls(pickle.load(file)) - def jsonlines_save(self, filebasename="save"): - with open(f'{filebasename}.jsonl', 'w') as file: + def jsonlines_save(self): + with open(self.save_path(".jsonl"), 'w') as file: for sim in self.simlist: file.write(json.dumps(vars(sim)) + "\n") @classmethod - def jsonlines_load(cls, filebasename="save"): + def jsonlines_load(cls): simlist = cls() - with open(f'{filebasename}.jsonl', 'r') as file: + with open(cls.save_path(simlist, ".jsonl"), 'r') as file: for line in file: sim = Simulation.from_dict(json.loads(line)) simlist.append(sim)