我一直想通過從簡單的文本文件中讀取它們來定義Python中的變量。因此我對ConfigParser,ConfigObj,PyYaml和JSON做了一些閱讀。目前我對ConfigObj和PyYaml特別感興趣。然而,我還沒有設法做到我想幹淨利落地做什麼。使用ConfigObj或PyYaml將字典對提取到交互式工作區中
使用ConfigObj和PyYaml我可以將外部文本文件中定義的所有內容加載到字典中。我想通過提取所有鍵值對並將它們作爲單獨的變量存儲到我的交互式工作區中來繼續處理該字典。
這是我一直使用至今的PyYaml方式:
import yaml
config_file = open('myFile', 'r')
config = yaml.read(config_file)
keys = config.keys()
values = config.values()
for i in range(len(keys)):
string = keys[i] + '=' + str(values[i])
eval(string)
使用eval
有時眉頭一皺約因可能允許各種惡意的事情發生。因此,我想知道PyYaml和/或ConfigObj是否具有實現上述功能的內置功能?
其實我正在使用MATLAB,但我也使用Python來獲得更多的靈活性。最終目標是將配置文件中定義的參數以MATLAB二進制格式(或mat文件)存儲。我寫的MATLAB程序使用正常的局部變量,所以我不得不離開字典。 – Aeronaelius
我不太明白爲什麼這意味着你需要在Python中使用locals(),但只要你明白它不是'最佳實踐'以及風險和其他等等,並且至今。 – Logan
你還建議如何將變量存儲在一個mat文件中?當然,我可以重寫我的整個MATLAB程序以不同的方式工作。但我認爲解析配置所需的腳本應該符合程序,而不是相反。 – Aeronaelius