为了完整起见,你还可以在“shlex”模块的帮助下,使用一种彩票式组合格式。 如果你有一套固定的组合参数,那么你可以将其与“optparse”模块结合起来。
from optparse import OptionParser
_o = OptionParser("%prog [options] configfiles...")
_o.add_option("--hostname", metavar="HOSTNAME", default="10.0.0.1")
_o.add_option("--username", metavar="USERNAME", default="admin")
_o.add_option("--password", metavar="PASSWORD", default="admin")
import shlex
def parse(filename, defaults):
opt, args = _o.parse_args(shlex.split(open(filename).read()), defaults)
return opt
if __name__ == "__main__":
import sys
values, args = _o.parse_args()
for arg in args:
values = parse(arg, values)
values, args = _o.parse_args(values = values)
for name in _o.defaults:
print name, "=", getattr(values, name)
例子表明,如果存在一套缺省价值和用户界定的红利,你如何掌握内部档案。 因此,假定你有两件档案,包括:
档案1.ini:
--hostname 10.2.3.4
--password admin-sc
档案2.ini:
--username "foo bar"
--password "special key"
然后,您可操作/configtest.py file1.ini file2.ini—password other,由此得出的数值为10.2.3.4,用户名为“foo bar”,密码为“other”。 如果你已经对你的方案参数进行了选择,那么这种配置环境的改变是手无寸铁的;它只是重复使用,而且你可以把指挥线的价值观从一个汇合档案中,甚至可能有一些全球汇合环境。
作为奖励措施,你的配置参数总是有文件记载,错误的配置参数将尽早出现,正如你可以利用选择的分离来预先检查你的缺省环境档案(ema)。 作为下游,内部没有意见,配置内容不容易地进行分化。 你们的教区基本上是一线。