setting.py
文件,并在开头导入它。有人告诉我应该将其改为settings.ini
文件,但我不明白为什么!请您说明一下,哪个选项更优?没有最佳解决方案,只是个人喜好的问题。
通常,设置不需要用 Turing 完备语言来表达:它们通常只是一堆标志和选项,有时是字符串和数字等。拥有一个 settings.py
文件的理由(虽然非常不正统)是如果预计终端用户将编写代码以生成非常奇特的配置(例如游戏地图),那么这将与 shell 脚本 .bashrc
类型的文件相当类似。
但是,在 99.9% 的程序中,设置通常只是一堆标志和选项,有时是字符串和数字等。将它们存储为 JSON 或 XML 是可以接受的。这也使得很容易在设置上执行反射:例如以树形方式自动列出它们或根据描述自动创建 GUI 等。
(此外,如果允许人们通过修改设置文件注入代码,则可能会成为(不太可能的?)安全问题。)
*编辑:无意刺痛...
配置可以由不懂编程语言的终端用户管理。将配置拆分出来,并使用简单的ini
文件,使用简单的键值对来设置配置参数,比较合理。
配置因安装环境而异。您的代码在多个环境上运行,它们都使用不同的配置。通过拥有单独的配置文件以及在这些环境中安装相同的源代码,很容易维护这样的情况。
存在知道何为配置文件和源文件的包管理器。它们很聪明,不会覆盖任何已更改的配置,例如版本升级等。因此,您无需在软件包版本升级后担心重置配置参数。例如,您将您的产品与默认配置文件一起发布。用户微调了几个参数。您发布了另一个版本的软件包。用户在版本升级后不应期望配置重置。
将设置文件作为Python模块的一个问题是,它可能包含在导入时执行的代码。这可能会允许恶意代码插入到您的程序中。
对于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。
.ini
这条路,请查看http://docs.python.org/library/configparser.html。 - lvc