ConfigParser与import config的区别

41

ConfigParser 是Python的备受争议的标准配置解析器。
但是,您可以简单地导入config,其中config.py具有设置配置参数的python代码。

这两种配置方法的优缺点是什么?何时应选择每种方法?

4个回答

33

我认为import config的最大问题是,当你导入时,你不知道会发生什么。是的,你会得到一组符号,可以通过.风格的接口进行自然引用。但配置文件中的代码也可能做任何事情。如果你完全信任你的用户,那么允许他们在配置文件中随心所欲地做任何事情可能是一件好事。然而,如果你有未知数量的用户,或者想要保护用户避免错误操作,那么使用更传统的格式来编写配置文件会更加安全可靠。


5
这是一个非常好的观点,因为我一直信任自己,所以没有考虑过这个问题。 - jathanism

8
这完全取决于您对脚本的需求和目标。没有一种方法是“更好”的,只是不同而已。有关大多数Python配置解析器(包括ConfigParserconfig模块)的详细讨论,请参见:

Python Wiki - ConfigParserShootout


6
"

import config"非常简单、灵活和强大,但由于它可以做任何事情,如果config.py不在安全的位置,可能会有危险。

"

4

在我看来,这取决于个人风格。你是否打算让第三方编辑你的配置文件?如果是这样,也许采用更加“自然”的配置风格,例如ConfigParser,这种风格不太技术化,也不会超出目标受众的理解范围,可能更有意义。

许多流行的项目,例如FabricDjango,使用“本地”配置风格,这实际上只是一个Python模块。Fabry有fabfile.py,而Django有settings.py

总的来说,使用本地导入模块的方法可以获得更多的灵活性,因为你可以在该文件中做任何你想要的事情,包括定义函数、类等,因为它只是另一个你正在导入的Python模块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接