我正在编写一个模拟软件,它应该支持从配置文件或命令行读取参数。能够跟踪模拟的配置是非常重要的,我在模拟开始时将配置文件提交到本地git存储库。
现在如果我在命令行上有参数,它们的优先级高于配置文件中的参数。但我也想承诺。我想我可以在启动之前保存已配置模拟的python对象。但是如果我能在提交之前用命令行参数更新配置文件,它会更优雅。
我在python中编写配置文件的原因是我必须在其中定义一些python对象。我有类似
的东西import SomeSimulationClass
SIMULATOR = SomeSimulationClass
在我的配置文件中,然后可以轻松交换SIMULATOR。 如果我想使用像configparser这样的东西我不能拥有我相信的对象。
有没有简单的方法来更新python配置文件?其中的所有变量名都已定义,我只想更改值。我唯一能想到的是解析文件,比较文件和命令行参数之间的字符串......
答案 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