更新用python

时间:2017-02-10 09:14:41

标签: python parsing config

我正在编写一个模拟软件,它应该支持从配置文件或命令行读取参数。能够跟踪模拟的配置是非常重要的,我在模拟开始时将配置文件提交到本地git存储库。

现在如果我在命令行上有参数,它们的优先级高于配置文件中的参数。但我也想承诺。我想我可以在启动之前保存已配置模拟的python对象。但是如果我能在提交之前用命令行参数更新配置文件,它会更优雅。

我在python中编写配置文件的原因是我必须在其中定义一些python对象。我有类似

的东西
import SomeSimulationClass
SIMULATOR = SomeSimulationClass

在我的配置文件中,然后可以轻松交换SIMULATOR。 如果我想使用像configparser这样的东西我不能拥有我相信的对象。

有没有简单的方法来更新python配置文件?其中的所有变量名都已定义,我只想更改值。我唯一能想到的是解析文件,比较文件和命令行参数之间的字符串......

2 个答案:

答案 0 :(得分:0)

您可以将任何想要的内容写入文件,然后Configparser可以阅读 使用变量中的值。以下是我如何使用Configparser从配置文件中读取环境的示例。

import os
from ConfigParser import SafeConfigParser

conf_filename = os.getenv("CONFIG_FILE")
src_dir  = os.getenv("CONFIG_DIR")
conf_file = os.path.join(src_dir,conf_filename)
parser = SafeConfigParser()
parser.read(conf_file)
section = env
server = parser.get(section, 'host')
db_port = parser.get(section, 'db_port')
ws_port = parser.get(section, 'ws_port')

和配置文件本身:

[PROD]
host=xxx-yyy-15
db_port=1521
ws_port=8280
ora_server=xxx-xxx-xxx.com
sid=XXXXX
userid=xxxx
passwd=xxxx
[STAGE]
host=xxx-yyy-04
db_port=1521
ws_port=8280
ora_server=yyy-yyy-yyy.com
sid=YYYYYY
userid=yyyy
passwd=yyyy

答案 1 :(得分:0)

我找到了一种方法来做我想做的事。我的python配置模块需要进行一些小的修改,以允许用以下脚本重写它,但它适用于我的目的:

true