设置模块

时间:2016-09-16 18:55:55

标签: python dictionary configuration python-module

为了研究目的,我正在编写一个导入音频文件,处理它们,绘制它们等的软件包。 在管道的每个阶段,从设置模块中提取设置,如下所示。

我希望能够更新像MODEL_NAME这样的全局设置,并在任何包含它的dicts中更新。

settings.py

MODEL_NAME = 'Test1'
DAT_DIR = 'dir1/dir2/'
PROCESSING = {
    "key1":{
        "subkey2":0,
        "subkey3":1
    },
    "key2":{
        "subkey3":MODEL_NAME
    }
}

run.py

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的值并运行其他东西。

其他想法可能是一个有更新方法或类似的课程,有没有人有更好的想法?

1 个答案:

答案 0 :(得分:1)

您希望为执行波形分析的函数配置字典中结构化的通用和特定设置。

首先定义一个设置类,例如:

{{1}}