71 lines
1.8 KiB
Python
71 lines
1.8 KiB
Python
import os
|
|
import json
|
|
|
|
|
|
class ConfigFile:
|
|
def __init__(self, name):
|
|
self.name = name
|
|
self._data = []
|
|
|
|
def load(self, folder):
|
|
filename = os.path.join(folder, self.name + '.json')
|
|
with open(filename, 'r') as f:
|
|
self._data = json.load(f)
|
|
|
|
def get(self, name):
|
|
if '.' not in name and name in self._data:
|
|
return self._data[name]
|
|
subs = "']['".join(name.split('.'))
|
|
substr = "self._data['" + subs + "']"
|
|
print(substr)
|
|
|
|
|
|
class Config:
|
|
def __init__(self, folder):
|
|
self.folder = folder
|
|
self._configs = {}
|
|
|
|
def load(self):
|
|
files = [f for f in os.listdir(self.folder) if os.path.isfile(os.path.join(self.folder, f)) and '.json' in f]
|
|
configs = {}
|
|
for f in files:
|
|
name = f.split('.')[0]
|
|
filename = os.path.join(self.folder, f)
|
|
with open(filename, 'r') as fh:
|
|
configs[name] = json.load(fh)
|
|
self._configs = configs
|
|
|
|
def get(self, name):
|
|
if '.' not in name and name in self._configs:
|
|
return self._configs[name]
|
|
subs = "']['".join(name.split('.'))
|
|
substr = "self._configs['" + subs + "']"
|
|
try:
|
|
sub = eval(substr)
|
|
return sub
|
|
except:
|
|
return None
|
|
|
|
def get_all(self, name_list):
|
|
output = {}
|
|
for name in name_list:
|
|
output[name] = self.get(name)
|
|
return output
|
|
|
|
def set(self, name, value):
|
|
if '.' not in name:
|
|
self._configs[name] = value
|
|
return
|
|
subs = "']['".join(name.split('.'))
|
|
substr = "self._configs['" + subs + "'] = {0}".format(value)
|
|
try:
|
|
eval(substr)
|
|
except:
|
|
pass
|
|
|
|
|
|
def load_config(folder):
|
|
config = Config(folder)
|
|
config.load()
|
|
return config
|