2010-06-16 55 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