64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
import os
|
|
import json
|
|
from typing import Union
|
|
|
|
cpath = "cmd_config.json"
|
|
|
|
def check_exist():
|
|
if not os.path.exists(cpath):
|
|
with open(cpath, "w", encoding="utf-8-sig") as f:
|
|
json.dump({}, f, indent=4, ensure_ascii=False)
|
|
f.flush()
|
|
|
|
class CmdConfig():
|
|
|
|
@staticmethod
|
|
def get(key, default=None):
|
|
check_exist()
|
|
with open(cpath, "r", encoding="utf-8-sig") as f:
|
|
d = json.load(f)
|
|
if key in d:
|
|
return d[key]
|
|
else:
|
|
return default
|
|
|
|
@staticmethod
|
|
def get_all():
|
|
check_exist()
|
|
with open(cpath, "r", encoding="utf-8-sig") as f:
|
|
return json.load(f)
|
|
|
|
@staticmethod
|
|
def put(key, value):
|
|
check_exist()
|
|
with open(cpath, "r", encoding="utf-8-sig") as f:
|
|
d = json.load(f)
|
|
d[key] = value
|
|
with open(cpath, "w", encoding="utf-8-sig") as f:
|
|
json.dump(d, f, indent=4, ensure_ascii=False)
|
|
f.flush()
|
|
|
|
@staticmethod
|
|
def init_attributes(key: Union[str, list], init_val = ""):
|
|
check_exist()
|
|
conf_str = ''
|
|
with open(cpath, "r", encoding="utf-8-sig") as f:
|
|
conf_str = f.read()
|
|
if conf_str.startswith(u'/ufeff'):
|
|
conf_str = conf_str.encode('utf8')[3:].decode('utf8')
|
|
d = json.loads(conf_str)
|
|
_tag = False
|
|
|
|
if isinstance(key, str):
|
|
if key not in d:
|
|
d[key] = init_val
|
|
_tag = True
|
|
elif isinstance(key, list):
|
|
for k in key:
|
|
if k not in d:
|
|
d[k] = init_val
|
|
_tag = True
|
|
if _tag:
|
|
with open(cpath, "w", encoding="utf-8-sig") as f:
|
|
json.dump(d, f, indent=4, ensure_ascii=False)
|
|
f.flush() |