1
1
mirror of https://github.com/KenanZhu/AutoLibrary.git synced 2026-06-18 15:33:03 +08:00
Files
AutoLibrary/src/utils/JSONWriter.py
T
KenanZhu 25aab588a8 feat(utils): 添加 ConfigManager 与 JSON 配置读写,替换旧实现
add:
- src/utils/ConfigManager.py
- src/utils/JSONReader.py
- src/utils/JSONWriter.py
remove:
- src/utils/ConfigReader.py
- src/utils/ConfigWriter.py
refactor:
- 更新调用方以使用 ConfigManager / JSONReader / JSONWriter(见 ALConfigWidget.py、ALMainWindow.py、ALTimerTaskManageWidget.py、ALMainWorkers.py 等)
- 统一方法命名(initlize* -> initialize*)、改进错误提示与配置路径管理

BREAKING CHANGE: 删除 ConfigReader/ConfigWriter,外部调用需改为 JSONReader/JSONWriter 或通过 ConfigManager 访问配置
2026-02-26 21:18:18 +08:00

82 lines
2.0 KiB
Python

# -*- coding: utf-8 -*-
"""
Copyright (c) 2026 KenanZhu.
All rights reserved.
This software is provided "as is", without any warranty of any kind.
You may use, modify, and distribute this file under the terms of the MIT License.
See the LICENSE file for details.
"""
import os
import json
class JSONWriter:
"""
JSON writer class.
This class is used to write JSON file.
Args:
json_path (str): The path of JSON file.
json_data (dict): The JSON data to be written.
Examples:
>>> json_data = {
... "key1": {
... "key2": "value1"
... }
... }
>>> json_writer = JSONWriter("config.json", json_data)
>>> print(open("config.json", "r", encoding="utf-8").read())
{
"key1": {
"key2": "value1"
}
}
"""
def __init__(
self,
json_path: str,
json_data: dict
):
self.__json_path = os.path.abspath(json_path)
self.__json_data = json_data.copy() if json_data is not None else {}
self.__write()
def __write(
self
):
try:
with open(self.__json_path, "w", encoding="utf-8") as f:
json.dump(self.__json_data, f, indent=4, sort_keys=False)
except PermissionError as e:
raise Exception(f"没有足够的权限写入文件: {self.__json_path}") from e
except IOError as e:
raise Exception(f"写入文件时发生 IO 错误: {self.__json_path}") from e
except TypeError as e:
raise Exception(f"JSON 数据包含无法 JSON 序列化的类型: {e}") from e
except Exception as e:
raise Exception(f"写入文件时发生未知错误: {e}") from e
def write(
self
) -> bool:
try:
self.__write()
except:
return False
return True
def path(
self
) -> str:
return self.__json_path