Python Json Config

python 使用json存储自身配置的代码示例; 包含配置缺少报错提示、初始化配置文件等功能,方便取用

使用方法

声明 config_path 作为json存放路径

声明 config_data 作为全局变量(字典类型)

代码中使用 load_json_config() 读取 config.json 的配置到内存

load_json_config 会调用 try_create_configcheck_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) # 更新配置文件

Switch 盗版游戏安装
Pandas