Last active
June 15, 2024 15:37
-
-
Save arifsuhan/4d5678614e9b7f9b065a1c0fbb988506 to your computer and use it in GitHub Desktop.
file IO common functions required (json, csv, request)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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