web-automation-demo/Library/LoadData.py

45 lines
1.4 KiB
Python

from Library.Json import json_decode
from Library.Yaml import yaml_decode
import csv
import os
def _home_of_data():
home = '%s/%s' % (os.path.dirname(os.path.dirname(__file__)), 'Data')
if os.path.exists(home):
return home
else:
raise FileNotFoundError('Directory "%s" does not exist.' % home)
def _checking_data_filename(_s: str):
if _s.replace("\\", '/').find('/') != -1:
raise NameError('The data filename "%s" is illegal in data directory.' % _s)
def loadDataFromJson(filename: str):
_checking_data_filename(filename)
return json_decode(open('%s/%s' % (_home_of_data(), filename), encoding='utf-8').read())
def loadDataFromYaml(filename: str):
_checking_data_filename(filename)
return yaml_decode(open('%s/%s' % (_home_of_data(), filename), encoding='utf-8').read())
def loadCsv(filename: str):
_checking_data_filename(filename)
file = '%s/%s' % (_home_of_data(), filename)
try:
open(file).read(4096)
encoding = None
except UnicodeDecodeError:
encoding = 'utf-8'
return [row for row in csv.reader(open(file, encoding=encoding))]
def loadTxt(filename: str):
_checking_data_filename(filename)
file = '%s/%s' % (_home_of_data(), filename)
try:
open(file).read(4096)
encoding = None
except UnicodeDecodeError:
encoding = 'utf-8'
return [row.rstrip("\n") for row in open(file, encoding=encoding).readlines()]