python单配置fi

2024-06-07 07:20:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个项目,它需要一个配置文件,其数据由多个模块使用。
我的问题是:通常的做法是什么?我应该从每个 我的模块(文件)或有其他方法吗?

我想有一个名为config.py的模块来读取配置文件,每当我需要配置时,我就执行import config,然后执行类似config.data['teamsdir']的操作来获取'teamsdir'属性(例如)。

响应:选择conf.py方法,因为它是模块化的、灵活的和简单的

我可以直接将配置数据放在文件中,如果我想从json文件读取xml文件或多个源文件,我只需更改conf.py并确保以相同的方式访问数据。

接受回答:选择“Alex Martelli”响应,因为它是最完整的。投票选出其他的答案,因为它们也有好的和有用的地方。


Tags: 模块文件数据项目方法pyimportconfig
3条回答

你所描述的方法是可以的。如果要添加对用户配置文件的支持,可以使用execfile(os.path.expanduser("~/.yourprogram/config.py"))

一种很好的方法是在应用程序启动时将配置文件解析为Python对象,并将该对象传递给需要访问配置的所有类和模块。

这可能会节省解析配置的大量时间。

我喜欢单个config.py模块的方法,该模块的主体(第一次导入时)解析一个或多个配置数据文件并适当地设置自己的“全局变量”——尽管我更喜欢config.teamdata而不是config.data['teamdata']方法。

这假设配置设置在加载后是只读的(除了在单元测试场景中,当测试代码将对config变量进行自己的人工设置以正确地运行被测试的代码时,它基本上利用了模块的本质,将其作为“singleton”的最简单的python形式(当然,当您不需要仅由类而不是由模块支持的子类化或其他特性时)。

“一个或多个”配置文件(例如,第一个位于/etc中的某个位置,用于常规默认设置,然后位于/usr/local下的某个位置,用于站点特定的覆盖,然后可能位于用户主目录中的某个位置,用于用户特定的设置)是一种常见而有用的模式。

相关问题 更多 >