1# 2# SPDX-License-Identifier: MIT 3# 4 5import os 6import re 7import errno 8 9def write_file(path, data): 10 # In case data is None, return immediately 11 if data is None: 12 return 13 wdata = data.rstrip() + "\n" 14 with open(path, "w") as f: 15 f.write(wdata) 16 17def append_file(path, data): 18 # In case data is None, return immediately 19 if data is None: 20 return 21 wdata = data.rstrip() + "\n" 22 with open(path, "a") as f: 23 f.write(wdata) 24 25def read_file(path): 26 data = None 27 with open(path) as f: 28 data = f.read() 29 return data 30 31def remove_from_file(path, data): 32 # In case data is None, return immediately 33 if data is None: 34 return 35 try: 36 rdata = read_file(path) 37 except IOError as e: 38 # if file does not exit, just quit, otherwise raise an exception 39 if e.errno == errno.ENOENT: 40 return 41 else: 42 raise 43 44 contents = rdata.strip().splitlines() 45 for r in data.strip().splitlines(): 46 try: 47 contents.remove(r) 48 except ValueError: 49 pass 50 write_file(path, "\n".join(contents)) 51