我正在研究一系列命令行工具,这些工具连接到同一台服务器并执行相关但不同的操作。我希望用户能够拥有一个配置文件,在这里他们可以放置常见的参数,例如可以在所有工具之间共享的连接信息。理想情况下,我想要为我做以下事情:
我见过的最接近的是configparse模块,据我所知,它提供了一个选项解析器,它也会查看配置文件,但似乎没有“必须”的概念指定某个“我需要的地方。”
有没有人知道可以覆盖我上面用例的现有模块?如果没有,我将非常感谢optparse,configparse或我未审核的其他模块的简单扩展。
答案 0 :(得分:1)
编写此方模块configparse以扩展optparse标准Python库。正如我指出的optparse文档所说,“optparse并不会阻止你实现所需的选项,但也不会给你很多帮助”(尽管后面有几个URL告诉你如何做到这一点) 。最简单的方法是使用default value功能:指定一个实际上不是合法值的默认值(对于像服务器地址这样的东西,这非常简单) - 然后,一旦处理了选项,验证指定的值是否合法(无论如何这是一个好主意! - )并提出适当的例外。
答案 1 :(得分:0)
我已经将opster的中间件功能与SafeConfigParser一起使用,以实现与您要求的相似(但稍微简单)的效果。你必须实现你自己描述的特定逻辑,但它足以帮助你使它相对无痛。 opster中间件使用的一个例子是test/test.py示例。
答案 2 :(得分:0)
使用dict存储程序选项。
首先解析用户目录中的选项文件,并将每个选项存储在dict中(configparse或欢迎任何其他模块)。然后解析命令行(使用你想要的任何模块,optparse可能适合),如果一个参数指定一个配置文件,解析一个dict中的指定文件并从你读到的内容更新你的选项(dict.update
真的很方便合并2 dict)。然后将所有其他参数存储到另一个dict中,然后再次合并它们(dict.update
再次......)。
这样,您确定存储选项的dict包含您想要的值,该值可以从用户的文件中读取,也可以从指定的配置文件中读取,也可以直接从命令行读取。如果它不包含必需值,则退出并显示错误。