Skip to content

Instantly share code, notes, and snippets.

@arifsuhan
Last active June 15, 2024 15:37
Show Gist options
  • Save arifsuhan/4d5678614e9b7f9b065a1c0fbb988506 to your computer and use it in GitHub Desktop.
Save arifsuhan/4d5678614e9b7f9b065a1c0fbb988506 to your computer and use it in GitHub Desktop.
file IO common functions required (json, csv, request)
import csv
import json
class FileManager():
def __init__(self):
pass
def validate(self,filename,data):
should_convert = False
is_dict = False
is_list = False
if isinstance(data, list) and data!=[]:
if all(isinstance(item, dict) for item in data):
is_dict = True
elif all(isinstance(item, list) for item in data):
is_list = True
if ".json" in filename:
should_convert = is_dict and True
elif ".csv" in filename:
should_convert = is_list and True
return not should_convert
def read(self,filename):
with open( filename, "r", encoding='utf-8' ) as file_object:
if ".json" in filename:
data = json.load(file_object)
elif ".csv" in filename:
csv_reader = csv.reader(file_object)
data = list(csv_reader)
return data
def write(self,filename,data_list):
flag = self.validate(filename,data_list)
if flag:
if ".json" in filename:
data_list = self.csv_to_json(data_list)
elif ".csv" in filename:
data_list, key_list = self.json_to_csv(data_list)
with open(filename,"w",encoding='utf-8') as file:
if ".json" in filename:
file.write(json.dumps(data_list, ensure_ascii=False, indent=4))
elif ".csv" in filename:
header = ",".join([ key for key in key_list]) + "\n"
file.write(header)
for data in data_list:
temp = ",".join(data) + "\n"
file.write(temp)
def csv_to_json(self,data_list):
keys = [key for key in data_list[0]]
result = []
for data in data_list[1:]:
temp = {k: v for k, v in zip(keys, data)}
result.append(temp)
return result
def json_to_csv(self,data):
key_list = [key for key in data[0]]
data_list = []
for temp in data:
temp = [temp[key] for key in key_list]
temp = ["" if data == [] else data for data in temp]
data_list.append(temp)
return data_list, key_list
def generate_json(self,schema):
pass
def generate_csv(self,schema):
pass
def format_data(self,data):
pass
def compare(self,expected,observed):
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment