python 使用json存储自身配置的代码示例; 包含配置缺少报错提示、初始化配置文件等功能,方便取用
使用方法
声明 config_path
作为json存放路径
声明 config_data
作为全局变量(字典类型)
代码中使用 load_json_config()
读取 config.json 的配置到内存
load_json_config
会调用try_create_config
、check_config
, 功能包括把json读取到内存,如果没有配置文件则创建;如果读取到的 config 配置文件比config_data
字典内容少会进行提示报错。
使用 config_data['xxx']
访问即可
todo
未完善保存相关功能,目前都是从外部加载配置文件,暂时没有保存需求!
1config_path = "assests\\config.json"
2config_data = {
3 "folder_root_path": "",
4 "open_floder_key": "enter",
5 "notifiction": "on",
6 "auto_hide": "on",
7 "playsound": "off",
8 "soundeffect": "effect2.wav",
9 "reload_key": "ctrl+f12",
10 "open_config_key": "ctrl+shift+f12",
11}
12
13def try_create_config():
14 '''尝试创建配置文件,仅在第一次运行时创建'''
15 try:
16 with open(config_path, encoding='utf-8') as file:
17 tmp = json.load(file)
18 except FileNotFoundError:
19 with open(config_path, "w", encoding='utf-8') as file:
20 json.dump(config_data, file, indent=4)
21 print("created config.json")
22
23def check_config():
24 '''检查配置文件'''
25 global config_data
26
27 with open(config_path, encoding='utf-8') as file:
28 json_config = json.load(file)
29 for k,v in config_data.items():
30 if k not in json_config:
31 print_red("Config Error",f"missing {k}")
32 print_red("example",f'"{k}": "{v}"')
33 print_red("try remove assests/config.json")
34 exit()
35
36
37def load_json_config():
38 '''加载配置文件'''
39 try_create_config()
40 global config_data
41 with open(config_path, encoding='utf-8') as file:
42 json_config = json.load(file)
43 check_config()
44 config_data.update(json_config) # 更新配置文件