Spaces:
Running
Running
import json | |
import os | |
class Config: | |
def __init__(self, file_path="config.json"): | |
self.file_path = file_path | |
self.data = {} | |
self.load() | |
def load(self): | |
"""Loads the configuration data from the JSON file.""" | |
try: | |
with open(self.file_path, "r", encoding="utf-8") as f: | |
self.data = json.load(f) | |
except FileNotFoundError: | |
print(f"Config file not found at {self.file_path}. Creating a new one.") | |
self.data = {} # Start with an empty config | |
self.save() | |
except json.JSONDecodeError: | |
print( | |
f"Error: Invalid JSON format in config file at {self.file_path}. The file will be reset." | |
) | |
self.data = {} | |
self.save() | |
def save(self): | |
"""Saves the configuration data to the JSON file.""" | |
with open(self.file_path, "w", encoding="utf-8") as f: | |
json.dump(self.data, f, indent=4, ensure_ascii=False) | |
def get(self, key, default=None): | |
"""Gets a configuration value by key. | |
Args: | |
key (str): The key to look up. | |
default: The default value to return if the key is not found. | |
Returns: | |
The configuration value or the default. | |
""" | |
return self.data.get(key, default) | |
def set(self, key, value): | |
"""Sets a configuration value. | |
Args: | |
key (str): The key to set. | |
value: The value to set. | |
""" | |
self.data[key] = value | |
self.save() | |
def update(self, new_data): | |
"""Updates the config data with a new dict | |
Args: | |
new_data: The data to update | |
""" | |
self.data.update(new_data) | |
self.save() | |
def delete(self, key): | |
"""Deletes a key from the config | |
Args: | |
key (str): the key to delete | |
""" | |
if key in self.data: | |
del self.data[key] | |
self.save() | |