41

ConfigParser备受争议的 Python 原生配置解析器。
但是,您可以简单地import config在哪里config.py设置配置参数的 python 代码。

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

4

4 回答 4

31

我看到的最大问题import config是您不知道导入它时会发生什么.是的,您将获得一组使用样式界面自然引用的符号。但是配置文件中的代码也可以做who-knows-what。现在,如果您完全信任您的用户,那么允许他们在配置文件中做他们想做的任何事情可能是一件好事。但是,如果您的数量未知,或者您想保护用户免受自己的侵害,那么拥有更传统格式的配置文件会更安全。

于 2011-11-09T16:06:34.037 回答
8

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

Python Wiki - ConfigParserShootout

于 2011-11-09T15:58:49.480 回答
6

“导入配置”非常简单、灵活且功能强大,但由于它可以做任何事情,如果 config.py 不在安全的地方可能会很危险。

于 2011-11-09T15:57:52.740 回答
4

IMO 归结为个人风格问题。您是否打算让第 3 方编辑您的配置?如果是这样,也许有一个更“自然”的配置风格是有意义的,ConfigParser因为它不是技术性的,并且可能不会超出你的目标受众的头脑。

许多流行的项目,例如FabricDjango使用“本机”配置样式,它本质上只是一个 Python 模块。Fabry 有fabfile.py,Django 有settings.py.

总体而言,使用本机方法导入模块将具有更大的灵活性,因为您可以在该文件中做任何您想做的事情,包括定义函数、类等,因为它只是您要导入的另一个 Python 模块.

于 2011-11-09T15:58:43.173 回答