2010-06-16 53 views
3

我想用Python来创建一个配置文件生成器。我大致的想法是用模板文件和一些带有真实设置的XML文件提供输入。然后使用该程序生成真实的配置文件。Python配置文件生成器

例子:

[template file] 
server_IP = %serverip% 
server_name = %servername% 


[XML file] 
<serverinfo> 
<server ip="x.x.x.x" name="host1" /> 
<server ip="x.x.x.x" name="host2" /> 
</serverinfo> 

,然后得到这样

[server.ini] 

[server1] 
server_IP = x.x.x.x 
server_name = host1 

[server2] 
server_IP = x.x.x.x 
server_name = host2 

输出配置文件我有几个问题:

  • 是否有任何开源配置生成程序? (什么可能是关键字),我想知道是否可以在设计中添加/修改任何内容。

  • Python有很好的XML解析器模块吗?

  • 使用XML文件保存原始设置是否好主意?我一直在考虑使用Excel,因为它更直观,但更难以解析程序。不确定人们如何处理这个问题。

希望社区能给我一些建议。非常感谢!

编辑: 在有很多这些输出ini文件的场景。我关心2件事。

  1. 有几十个ip/hostname和相关信息,可能需要人工管理,所以XML格式会有点不方便。管理这些信息的最便利的结构是什么? (Excel将是一个方便的工具批量修改和查找信息)

  2. 如果需要添加一些额外的行到ini文件,我需要一个有效的方法,只需修改模板文件,并添加额外的信息到源文件(可能是Excel文件或其他),然后可以快速生成整个ini文件串。

回答

3

我推荐使用Michael Foord出品的优秀ConfigObj图书馆。它可以读/写配置文件,即使嵌套部分。

1

对任何配置文件都使用xml是非常棒的。任何解释语言的最佳选择是使用代码文件,并简单地执行或导入它。泡菜也很好,但不是人类可读的。

1

我已经使用minidom模块。这可能适合你。

3

我不知道是否有任何开源配置生成器。

Python有several xml解析器模块,最新的(也许是最pythonic)是ElementTree。你可以在developer's site找到更多的文档。

如果可能,我建议在配置文件中避免使用xml。一个完整的名称/值对的简单平面文件对于人类来说更容易处理。如果你需要一个或两个结构,ini风格的文件应该很好地完成,python为它们提供了一个built-in parser

+0

感谢您的建议。但我需要生成我的问题中提到的几十个ini文件。我想将ini另存为模板。我真正的问题是如何保存这些数十条信息?什么样的结构对于人来说是最方便管理配置的,但是一旦有需要应用于所有ini文件的变化就更容易生成。请看我修改的问题。谢谢。 – Stan 2010-06-17 04:29:12

+0

为了澄清,我建议您使用平面名称/值文本文件或ini文件作为* source *文件,并使用其中的数十个数据填充模板文件。 – 2010-06-17 04:51:39

1

您需要一些模板引擎,请看string.Template

+0

您应该避免通过纯字符串连接来生成XML,因为您可以轻松地运行编码问题。毕竟你生成了一个巨大的XML文件无法解析它,因为编码被破坏 - 发生了不止一次...因为我只使用xml.minidom – martyglaubitz 2012-10-03 09:06:31