“设置文件”将是一个文件,其中定义了诸如“背景颜色”,“执行速度”,“x的数量”之类的内容。目前,我将其实现为单个setting.py
文件,我在开始时导入该文件。有人告诉我,我应该把它改成settings.ini
文件,但我不明白为什么!注意澄清,最佳选择是什么?
答案 0 :(得分:4)
没有最佳解决方案;这是一个偏好的问题。*
通常,设置不需要用图灵完备语言表达:它们通常只是一堆标志和选项,有时是字符串和数字等。有settings.py
文件的参数(如果最终用户被期望编写代码来生成非常深奥的配置(例如游戏地图),那将是非常不正统的。这将与shell脚本.bashrc
- 样式文件非常相似。
但同样,在99.9%的程序中,设置通常只是一堆标志和选项,有时是字符串和数字等。可以将它们存储为JSON或XML。它还可以轻松地对您的设置执行反射:例如,以树形方式自动列出它们,或者自动从描述中创建GUI。
(如果您允许人们通过修改设置文件来注入代码,也可能是(不太可能?)安全问题。)
*编辑:没有双关语......
答案 1 :(得分:3)
将主配置库中的配置文件分离出来是个好主意。当然这取决于你的用例,你应该根据你的用例进行评估。
配置可由最终用户管理,他们不懂编程语言。分解配置并使用简单的ini
文件更有意义,该文件对配置参数使用简单的键值对。
配置因安装环境而异。您的代码在多个环境中运行,并且它们都使用不同的配置。通过在这些环境中安装单独的配置文件和相同的源代码来维护这种情况非常容易。
有包管理器知道什么是配置文件,什么是源文件。它们是智能的,不会在版本升级等时覆盖任何更改的配置。因此,您不必担心在软件包升级后重置配置参数。例如,您使用默认配置文件发运产品。用户微调了一些参数。您发送了该软件包的另一个版本。用户不应期望在版本升级后重置配置。
答案 2 :(得分:2)
将设置文件作为Python模块的一个问题是它可以包含将在导入时执行的代码。这可能允许将恶意代码插入到您的程序中。
答案 3 :(得分:1)
对于Python使用库存库:
YAML样式配置文件:
http://www.yaml.org/start.html
http://pypi.python.org/pypi/PyYAML/
(例如Google App Engine使用)
INI:http://docs.python.org/library/configparser.html
不要将XML用于手动编辑的配置文件。