我正在编写需要打开JSON文件的代码,该文件包含与使用该软件相关的常规配置,将其解析为字典并可能覆盖其某些值。在运行期间需要多次访问这些配置以检查设置。用于处理配置文件的设计
例如:其中一个配置是“用户名”和“密码”,如果用户不存在或需要读取其他信息,则需要由用户填写。另一个配置涉及“软件应该如何工作”,具有“模式A”,“模式B”和“模式C”的可能值。
问题是:我不是程序员,我也搞不清楚管理配置的好设计。我应该打开JSON文件,每次需要时重写并保存它,或者将其解析为一个变量并将此变量保存在内存中,直到我不再需要它为止(在代码运行之前),然后将其保存到最后的JSON文件?
另一个问题是:如果我更喜欢将它解析为一个变量并保存它直到程序结束,我应该怎么做?这个变量需要被几个函数访问,所以我认为我应该使用一个全局变量,但是我已经读过使用“全局”语句写入全局变量是一个不好的做法,可能会导致一团糟。例如:
import json
config_global = None
def read_JSON_file():
config_file = open(r'config_file.json')
global config_global
config_global = json.load(config_file)
config_file.close()
def functionA():
global config_global
# Do something with config_global
def functionB():
global config_global
# Do something with config_global
def save_JSON_file()
config_file = open(r'config_file.json', 'w')
json.dump(config_global, config_file)
config_file.close()
read_JSON_file()
functionA()
functionB()
save_JSON_file()
我还以为我可以通过函数调用之间的配置变量的引用,但我不知道这是否会是一个很好的解决方案,因为我将不得不通过它为每功能,每次:
import json
def read_JSON_file() -> dict:
config_file = open(r'config_file.json')
config = json.load(config_file)
config_file.close()
return config
def functionA(config: dict):
# Do something with config
def functionB(config: dict):
# Do something with config
def save_JSON_file(config: dict)
config_file = open(r'config_file.json', 'w')
json.dump(config, config_file)
config_file.close()
parsed_config = read_JSON_file()
functionA(parsed_config)
functionB(parsed_config)
save_JSON_file(parsed_config)
我也看到了有关使用一个单独的,我不完全了解它是如何工作的,或者这将是一个很好的解决方案的东西。
最终,我想知道这将是一个很好的解决方案。请告诉我可能遇到的问题,我可能会遇到我的实施,并免费提出更好的解决方案。
感谢您的关注和帮助。
我是一名程序员,我无法弄清楚管理配置的好设计。 – evilSnobu