【问题标题】:Python configuration file generatorPython 配置文件生成器
【发布时间】:2011-03-04 17:01:16
【问题描述】:

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

例子:

[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 文件的情况下。我关心两件事。

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

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

【问题讨论】:

    标签: python xml configuration-files


    【解决方案1】:

    我建议使用 Michael Foord 的优秀 ConfigObj 库。它可以读/写配置文件,即使是嵌套的部分。

    【讨论】:

      【解决方案2】:

      不知道有没有开源的配置生成器。

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

      如果可能,我建议您在配置文件中避免使用 xml。一个包含名称/值对的简单平面文件对人类来说更容易使用。如果你需要一两层的结构,ini 样式的文件应该可以做得很好,python 为它们提供了一个built-in parser

      【讨论】:

      • 感谢您的建议。但是我需要生成我的问题中提到的几十个 ini 文件。我想让ini保存为模板。而我真正的问题是如何保存这几十条信息?什么样的结构对人类管理配置最方便,而且一旦发生需要应用于所有 ini 文件的更改,也更容易生成。请参阅我修改后的问题。谢谢。
      • 为了澄清,我建议您使用平面名称/值文本文件或 ini 文件作为您的 source 文件,并使用其中的数十个数据来填充您的模板文件。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我使用了minidom 模块。这可能对你有用。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 您应该避免通过纯字符串连接生成 XML,因为您很容易遇到编码问题。毕竟你生成了一个巨大的 XML 文件,但由于编码被破坏而无法解析它 - 对我来说发生了不止一次......因为我只使用 xml.minidom
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-01
          相关资源
          最近更新 更多