【问题标题】:Adding Command Line Arguments to Python Twisted将命令行参数添加到 Python Twisted
【发布时间】: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']

这根本行不通。有什么建议吗?

【问题讨论】:

    标签: python twisted


    【解决方案1】:

    我不知道我是否理解你的问题。

    如果您想从多个位置加载配置,您可以将文件名列表传递给 configparser:https://docs.python.org/2/library/configparser.html#ConfigParser.RawConfigParser.read

    如果您尝试创建一个通用配置管理器,您可以创建一个函数类来接收文件名,或者您可以使用在环境变量中设置配置文件名并使用类似 os 的方式在脚本中读取该变量.environ.get('CONFIG_FILE_NAME').

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2023-04-02
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      相关资源
      最近更新 更多