我正在編寫需要打開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