应用程序设置
Spruce-settings的Python项目详细描述
云杉设置是一个应用程序设置的python库。
某些应用程序在存在之前需要某些设置。 推出。有些应用程序需要能够保存 设置,使它们在终止后保持不变。希望 通过统一接口访问持久设置和运行时设置。 此包提供满足这些要求的对象。
设置可以以多种方式存储。Windows使用系统 登记处。OSX使用XML首选项文件。许多unix应用程序使用 ini样式配置(conf)文件。最好存一些 数据库中的设置。目前,这个模块只实现conf 文件方法,但它提供了足够的抽象来允许 根据需要实施的方法。
示例
一次性使用
importspruce.settingsas_settingssettings=_settings.Settings(organization='myorg',application='myapp')withsettings.open(),settings.ingroup('db'):dbserver=settings.value('server',required=True)dbport=settings.intvalue('port')db_entity_tables=settings.listvalue('entity_tables')
多种用途
importspruce.settingsas_settingssettings=_settings.Settings(organization='myorg',application='myapp')withsettings.open():withsettings.ingroup('dbconn'):dbserver=settings.value('server',required=True)dbport=settings.intvalue('port')withsettings.ingroup('dbtables'):db_entity_tables=settings.listvalue('entity_tables')
工厂法
fromcollectionsimportnamedtupleas_namedtupleimportspruce.settingsas_settingsclassUser(_namedtuple('User',('name','password'))):@classmethoddeffrom_settings(cls,settings,group=None,name_key='name',password_key='password'):withsettings.ingroup(group):name=settings.value(name_key,required=True)password=settings.value(password_key,required=True)returncls(name=name,password=password)settings=_settings.Settings(organization='myorg',application='myapp')withsettings.open():user=User.from_settings(settings,'user')
设计
范围
可以为整个系统或每个用户指定设置。这个范围 称为base scope。
设置特定于组织、应用程序或子系统, 它们统称为component scopes。子系统是 按它们所属的应用程序分组。应用程序是 按生产它们的组织分组。
设置
每个设置都是一个(键,值)对。键是一个非空字符串 为每个应用程序唯一标识设置。值是任何字符串 (或任何可以表示为字符串的对象)。
密钥区分大小写。
组
键可以分组;例如,Book/Color和Book/PageCount 都是Book组的一部分,以及一些存储格式(例如 conf)可以通过写入Color和PageCount条目来反映这一点 一起放在Book部分。
可以嵌套组。
位置
主位置是由 格式、基本范围、组织、应用程序和 创建settings对象时指定的子系统。
当写入设置时,它们总是写入主设置 地点。
查询设置时,首先搜索主位置。如果 在那里找不到,将触发回退机制。第一, 搜索更大的组件范围。如果找不到设置 在那里,基本作用域是user,然后是原始组件作用域 在system基本作用域中搜索,后跟较大的 system中的组件作用域。
格式
设置格式指定存储设置的位置和方式。每种格式 定义为给定范围存储设置的文件路径,以及 如何在这些文件中读取和写入设置。