Untitled
unknown
python
2 years ago
3.9 kB
3
Indexable
import dataclasses import json from abc import ABC, abstractmethod from typing import List, Dict, Tuple import os import csv class GenericSerializer(ABC): @abstractmethod def load_csv(self, path): pass @abstractmethod def write_csv(self, path, data: List): pass @abstractmethod def update_csv(self, path, data: List): pass @abstractmethod def load_json(self, path): pass @abstractmethod def write_json(self, path, data: (List, Dict)): pass @abstractmethod def update_json(self, path, data: (List, Dict)): pass @abstractmethod def write_object_fields(self, path, obj): pass class Serializer(GenericSerializer): def write_csv(self, path, data: List): with open(path, "w") as f: if ".csv" not in path: raise ValueError('Błędny format pliku') else: writer = csv.writer(f) if isinstance(data, list) == False: raise TypeError('Błędny typ danych') else: for row in data: writer.writerow(row) def load_csv(self, path): if os.path.isfile(path) == False: raise IOError('Podany plik csv nie istnieje') else: with open(path, "r") as f: reader = csv.reader(f) reader_list = [] for row in reader: reader_list.append(row) return reader_list def update_csv(self, path, data: List): if os.path.isfile(path) == False: raise IOError('Podany plik csv nie istnieje, nie mozna go zaktualizowac!') else: with open(path, "a") as f: writer = csv.writer(f) if isinstance(data, list) == False: raise TypeError('Błędny typ danych') else: for row in data: writer.writerow(row) def load_json(self, path): if os.path.isfile(path) == False: raise IOError('Podany plik json nie istnieje.') else: with open(path, "r") as f: return json.load(f) def write_json(self, path, data: (List, Tuple)): with open(path, 'w') as f: if ".json" not in path: raise ValueError('Błędny format pliku') elif isinstance(data, list) == False and isinstance(data, tuple) == False: raise TypeError('Błędny typ danych') else: i = 1 dictionary = {} for element in data: dictionary[i] = element i += 1 json.dump(dictionary, f) def update_json(self, path, data: (List, Tuple)): if os.path.isfile(path) == False: raise IOError('Podany plik json nie istnieje, nie mozna go zaktualizowac.') else: with open(path, "a") as f: i = 1 dictionary = {} for element in data: dictionary[i] = element i += 1 json.dump(dictionary, f) def write_object_fields(self, path, obj): with open(path, "w") as f: fields = vars(obj) json.dump(fields, f) class AnotherClass(): def __init__(self, a, b, c, d): self.a = a self.b = b self.c = c self.d = d data = [["Folek", "jest", "kary"], ["Aqua", "jest", "gniada"], ["Cassiano", "jest", "siwy"]] obiekt = Serializer() data_2 = [["Chacitol", "jest", "gniady"]] obiekt.write_json("data_object.json", data) obiekt.update_json("data_object.json", data_2) obj = AnotherClass(1, 2, 3, "Ala") obiekt.write_object_fields("json_object_fields.json", obj)
Editor is loading...