What is the best method for setting up a config file in Python
我意识到了这个问题(在python中使用设置文件的最佳实践是什么?)但正如7年前所问的那样,我认为再次讨论技术是如何发展的是有道理的。
我有一个python项目,它要求根据环境变量的值使用不同的配置。由于使用环境变量选择配置文件非常简单,所以我的问题如下:
当需要基于环境的多个配置时,软件行业将哪种格式视为在python中设置配置文件的最佳实践?
我知道python附带了一个configparser模块,但是我想知道使用yaml或json这样的格式是否更好,因为它们在不同语言间的易用性提高了流行性。当您有多个配置时,哪种格式更容易维护?
如果您真的想使用基于环境的yaml配置,可以这样做:
组态软件1 2 3 4 5 6 7 8 9 10 11 12 13 | import yaml import os config = None filename = getenv('env', 'default').lower() script_dir = os.path.dirname(__file__) abs_file_path = os.path.join(script_dir, filename) with open(abs_file_path, 'r') as stream: try: config = yaml.load(stream) except yaml.YAMLError as exc: print(exc) |
我认为查看python-django设置模块的标准配置就是一个很好的例子,因为python-django web框架在商业项目中非常流行,因此是软件行业的代表。
对于JSON或YAML配置文件,它不会变得过于花哨——它只使用一个名为settings.py的python模块,该模块可以导入到任何其他需要访问设置的模块中。基于环境变量的设置也在这里定义。以下是指向Github上Django的示例settings.py文件的链接:
https://github.com/deis/example-python-django/blob/master/helloworld/settings.py
这实际上取决于您的需求,而不是格式的流行程度。例如,如果您只需要简单的键值对,那么一个ini文件就足够了。一旦您需要复杂的结构(例如数组或字典),我就选择JSON或YAML。JSON只存储数据(它更适合于系统之间的自动数据流),而YAML更适合于人工生成(或维护或读取)文件,因为它有注释,您可以在文件中的其他地方引用值…除此之外,如果您想要健壮性、灵活性和检查文件结构是否正确的方法(但不太关心数据的手动版本),我会选择XML。