应用程序设置

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/ColorBook/PageCount 都是Book组的一部分,以及一些存储格式(例如 conf)可以通过写入ColorPageCount条目来反映这一点 一起放在Book部分。

可以嵌套组。

位置

主位置是由 格式、基本范围、组织、应用程序和 创建settings对象时指定的子系统。

当写入设置时,它们总是写入主设置 地点。

查询设置时,首先搜索主位置。如果 在那里找不到,将触发回退机制。第一, 搜索更大的组件范围。如果找不到设置 在那里,基本作用域是user,然后是原始组件作用域 在system基本作用域中搜索,后跟较大的 system中的组件作用域。

格式

设置格式指定存储设置的位置和方式。每种格式 定义为给定范围存储设置的文件路径,以及 如何在这些文件中读取和写入设置。

更改日志

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用户界面java,使用gui连接到另一台计算机/服务器的文件系统   运行sbt的ubuntu返回错误:“javahome需要<path>参数”   java如何在Android中处理许多ImageView而不出现内存问题?   查询中非法字符的java相同URL失败   安卓取消引用可能会产生“java”。lang.NullPointerException'   java中的indexoutofboundsexception“java.lang.ArrayIndexOutOfBoundsException”错误   xml Java将dom保存到文件>文件在程序结束后由另一个进程打开   Java的垃圾收集器是如何工作的?   Java如何筛选值(列表)   java处理字符串我怎样才能像在真实的书籍中一样在上面部分生成“小数字”呢?   java SonarQube是否有一个API来获取所有项目分析的一部分?   java startActivity(intent)什么都不做   JAVAutil。扫描器类Java   java如何从Firebase更新电子邮件?UpdateMail方法已被弃用   java Hibernate。如何正确组织带有注释的onetomany关系?   在java中获得卷标和驱动器号之间的映射(而不是FileSystemView)的解决方法是什么   java查找文件的路径