我还是Python的新手,所以在阅读本文时请记住这一点。
我一直在攻击原先的#34; put"由几个不同的人一起。
该脚本最初旨在加载它的配置'使用名为" conf / config.py"的模块这基本上是Python代码。
SETTING_NAME='setting value'
我已修改此内容,而是使用ConfigParser从配置文件中读取它的设置:
import ConfigParser
config_file_parser = ConfigParser.ConfigParser()
CONFIG_FILE_NAME = "/etc/service_settings.conf"
config_file_parser.readfp(open(r'' + CONFIG_FILE_NAME))
SETTING_NAME = config_file_parser.get('Basic', 'SETTING_NAME')
我遇到的问题是如何指定要使用的配置文件。目前,我已经设法通过拥有多个TAC文件并设置" CONFIG_FILE_NAME"变量在那里使用另一个模块来保存变量值。例如,我有一个模块' conf / ConfigLoader.py":
global CONFIG_FILE_NAME
然后我的TAC文件有:
import conf.ConfigLoader as ConfigLoader
ConfigLoader.CONFIG_FILE_NAME = '/etc/service_settings.conf'
所以conf / config.py模块现在看起来像:
import ConfigLoader
config_file_parser = ConfigParser.ConfigParser()
config_file_parser.readfp(open(r'' + ConfigLoader.CONFIG_FILE_NAME))
它可以工作,但它需要管理两个文件而不是一个conf文件。我试图使用" usage.Options" http://twistedmatrix.com/documents/current/core/howto/options.html中描述的功能。所以我有twisted / plugins / Options.py
from twisted.python import usage
global CONFIG_FILE_NAME
class Options(usage.Options):
optParameters = [['conf', 'c', 'tidepool.conf', 'Configuration File']]
# Get config
config = Options()
config.parseOptions()
CONFIG_FILE_NAME = config.opts['conf']
这根本不起作用。有什么提示吗?
答案 0 :(得分:0)
我不知道我是否理解你的问题。
如果要从多个位置加载配置,可以将文件名列表传递给configparser:https://docs.python.org/2/library/configparser.html#ConfigParser.RawConfigParser.read
如果您正在尝试创建一个通用配置管理器,您可以创建一个接收文件名的函数类,或者您可以使用在环境变量中设置配置文件名,并使用类似os的内容在脚本中读取该变量.environ.get( 'CONFIG_FILE_NAME')。