import pprint import os class ServerProps: def __init__(self, filepath): self.filepath = filepath self.props = self._parse() def _parse(self): # Loads and parses the file specified in self.filepath with open(self.filepath, encoding="utf-8") as fp: line = fp.readline() d = {} if os.path.exists(".header"): os.remove(".header") while line: if "#" != line[0]: s = line s1 = s[: s.find("=")] if "\n" in s: s2 = s[s.find("=") + 1 : s.find("\n")] else: s2 = s[s.find("=") + 1 :] d[s1] = s2 else: with open(".header", "a+", encoding="utf-8") as h: h.write(line) line = fp.readline() return d def print(self): # Prints the properties dictionary (using pprint) pprint.pprint(self.props) def get(self): # Returns the properties dictionary return self.props def update(self, key, val): # Updates property in the properties dictionary [ update("pvp", "true") ] # and returns boolean condition if key in self.props.keys(): self.props[key] = val return True else: return False def save(self): # Writes to the new file with open(self.filepath, "a+", encoding="utf-8") as f: f.truncate(0) with open(".header", encoding="utf-8") as header: line = header.readline() while line: f.write(line) line = header.readline() header.close() for key, value in self.props.items(): f.write(key + "=" + value + "\n") if os.path.exists(".header"): os.remove(".header") @staticmethod def cleanup(): if os.path.exists(".header"): os.remove(".header")