为了研究目的,我正在编写一个导入音频文件,处理它们,绘制它们等的软件包。 在管道的每个阶段,从设置模块中提取设置,如下所示。
我希望能够更新像MODEL_NAME
这样的全局设置,并在任何包含它的dicts中更新。
MODEL_NAME = 'Test1'
DAT_DIR = 'dir1/dir2/'
PROCESSING = {
"key1":{
"subkey2":0,
"subkey3":1
},
"key2":{
"subkey3":MODEL_NAME
}
}
import settings as s
wavs = import_wavs(s.DAT_DIR)
proc_wavs = proc_wavs(wavs,s.PROCESSING)
某些设置指出我想要包含MODEL_NAME
,这可以正常工作。当我想在运行时更改MODEL_NAME
时出现问题。所以,如果我这样做:
import settings as s
wavs = import_wavs(s.DAT_DIR)
s.MODEL_NAME='test1'
proc_wavs1 = proc_wavs(wavs,s.PROCESSING)
s.MODEL_NAME='test2'
proc_wavs2 = proc_wavs(wavs,s.PROCESSING)
但显然这两个调用s.PROCESSING
都会包含最初在设置文件中指定的MODEL_NAME
。
更新它的最佳方法是什么?
我想到的可能的解决方案:
将变量存储为可变类型,然后更新它,例如:
s.MODEL_NAME[0] = ["test1"]
# do processing things
s.MODEL_NAME[0] = ["test2"]
将每个设置类别定义为函数,以便重新运行 每次电话:。
MODEL_NAME = 'test1' ..
def PROCESSING():
return {
"key1":{
"subkey2":0,
"subkey3":1
},
"key2":{
"subkey3":MODEL_NAME
}
}
然后
s.MODEL_NAME='test1'
proc_wavs1 = proc_wavs(wavs,s.PROCESSING())
s.MODEL_NAME='test2'
proc_wavs1 = proc_wavs(wavs,s.PROCESSING())
我认为这会很有效,但那时很难 在运行期间更改函数的任何条目,例如,如果我想 更新subkey2的值并运行其他东西。
其他想法可能是一个有更新方法或类似的课程,有没有人有更好的想法?
答案 0 :(得分:1)
您希望为执行波形分析的函数配置字典中结构化的通用和特定设置。
首先定义一个设置类,例如:
{{1}}