【发布时间】:2014-06-25 22:47:54
【问题描述】:
我还是 Python 新手,所以在阅读本文时请记住这一点。
我一直在破解一个现有的 Python 脚本,该脚本最初是由几个不同的人“组合”在一起的。
该脚本最初设计为使用名为“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 文件。我尝试使用http://twistedmatrix.com/documents/current/core/howto/options.html 中描述的“usage.Options”功能。所以我有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']
这根本行不通。有什么建议吗?
【问题讨论】: