更好的方法,用于多个模块使用的不当更改的配置信息

时间:2014-10-30 21:20:38

标签: python configuration import

我正在努力决定向许多系统管理员脚本提供配置数据的“最佳”方式,这些脚本执行管理备份,存档等操作。

我在测试过程中使用的两种方法是脚本中的常量(完全不适合生产,但很容易测试),并使用configparser将信息放在一个文件中。

我正在寻找将所有内容放入单个模块的替代方案:

configurations.py

import re
# Regular expression object to use in matching with file names
FILE_NAME_MATCH_PATTERN = re.compile(
    '''([A-Z@~1-9]{4})     # Group-1: 4 uppercase letters for the show code
    _                 # if they are followed by an underscore
    (\d{2}\.?\d{3})   # Group-2: either ##.### or ##### (remove the . to get a final file name!
    _                 # if they are followed by an underscore
    ([A-Z](?=[._ ]))   # Group-3: a SINGLE uppercase letter IF it is followed by a " ", "." or an "_" only
    _?                # but, since we may or may not have the _ we need to look for it
    (.*)              # Group-4: IF there is anything between A_ and .ext we capture it here
    \.(.+)$           # Group-5: The file extension, of any length
    ''', re.VERBOSE)  # DESIGNED TO WORK WITH RE.MATCH AT THE BEGINNING OF A STRING!
WATCHED_FOLDER_PATH = '/Users/ops/Desktop/first_drop'
OUTPUT_FOLDER_PATH = '/Users/ops/Desktop/slicer_watched'
SECONDS_TO_WAIT_FOR_IMAGES = 5  # 5 for testing, 60 for production
SECONDS_TO_WAIT_FOR_UPLOADS = 5  # 5 for testing, 20 for production
SECONDS_TO_WAIT_BETWEEN_FOLDER_CHECKS = 1  # 1 for testing, 120 for production

并使用配置导入* 但是,我有点担心名字冲突。我知道我可以做配置.OUTPUT_FOLDER_PATH(等),看起来有点凌乱。或许,

from configurations import SECONDS_TO_WAIT_FOR_IMAGES

理想情况下,有一个配置文件可能会被许多不同的例程使用,但这会产生确保配置文件路径是每个脚本(另一个常量)的一部分的问题,而导入方法只需要我放置将configurations.py文件放入计算机的pythonpath中。

这肯定是一个已经讨论死亡的问题,但是我的Google-Fu让我失望了。

0 个答案:

没有答案