我正在开发一个项目,它需要一个配置文件,其数据由多个模块使用。
我的问题是:通常的做法是什么?我应该从每个
我的模块(文件)或有其他方法吗?
我想有一个名为config.py的模块来读取配置文件,每当我需要配置时,我就执行import config
,然后执行类似config.data['teamsdir']
的操作来获取'teamsdir'
属性(例如)。
响应:选择conf.py方法,因为它是模块化的、灵活的和简单的
我可以直接将配置数据放在文件中,如果我想从json文件读取xml文件或多个源文件,我只需更改conf.py并确保以相同的方式访问数据。
接受回答:选择“Alex Martelli”响应,因为它是最完整的。投票选出其他的答案,因为它们也有好的和有用的地方。
你所描述的方法是可以的。如果要添加对用户配置文件的支持,可以使用
execfile(os.path.expanduser("~/.yourprogram/config.py"))
。一种很好的方法是在应用程序启动时将配置文件解析为Python对象,并将该对象传递给需要访问配置的所有类和模块。
这可能会节省解析配置的大量时间。
我喜欢单个
config.py
模块的方法,该模块的主体(第一次导入时)解析一个或多个配置数据文件并适当地设置自己的“全局变量”——尽管我更喜欢config.teamdata
而不是config.data['teamdata']
方法。这假设配置设置在加载后是只读的(除了在单元测试场景中,当测试代码将对
config
变量进行自己的人工设置以正确地运行被测试的代码时,它基本上利用了模块的本质,将其作为“singleton”的最简单的python形式(当然,当您不需要仅由类而不是由模块支持的子类化或其他特性时)。“一个或多个”配置文件(例如,第一个位于
/etc
中的某个位置,用于常规默认设置,然后位于/usr/local
下的某个位置,用于站点特定的覆盖,然后可能位于用户主目录中的某个位置,用于用户特定的设置)是一种常见而有用的模式。相关问题 更多 >
编程相关推荐