Python 中模板文件评估
我正在尝试用Python把一组模板转换成一组配置文件,这些配置文件的内容是根据一个主配置文件里的值来决定的。不过,我遇到了一些问题。下面是一个模板文件的例子。
file1.cfg.template
%(CLIENT1)s %(HOST1)s %(PORT1)d C %(COMPID1)s
%(CLIENT2)s %(HOST2)s %(PORT2)d C %(COMPID2)s
这个文件为每个客户都有一条记录。像这样的配置文件有成百上千个,我不想为每种配置文件写逻辑。希望Python能根据从主XML配置文件读取的一组全局值,自动替换并生成配置文件。但是,在上面的例子中,如果CLIENT2不存在,我该怎么删除那一行呢?我希望Python能用类似下面的方式生成配置文件:
os.open("file1.cfg.template").read() % myhash
这里的myhash是主配置文件中配置参数的哈希值,可能根本不包含CLIENT2。如果不包含CLIENT2,我希望那一行能从文件中消失。有没有办法在文件里插入一些'IF'块,让Python来判断呢?
谢谢你的帮助,任何建议都非常欢迎。
3 个回答
0
也许你可以使用一个独立的Django模板。
0
假设这些文件已经存在,我会为像CLIENT2这样的东西设置默认值(前提是你提前知道所有可能的键)。你可以把默认值设置成一些不常见的东西,这样你就可以这样做:
config = os.open("file1.cfg.template").read() % myhash
config = [l for l in config.split('\n') if <l does not have unusual text>].join('\n')
我同意其他人的看法,从长远来看,使用一个更强大的模板会更好。