带模式和类型的ini文件解析器

zini的Python项目详细描述


https://travis-ci.org/zzzsochi/zini.svg?branch=masterhttps://coveralls.io/repos/github/zzzsochi/zini/badge.svg?branch=master

带模式和类型的ini文件解析器

zini的哲学

应用程序的设置必须简单! 它应该是一个代码或复杂的结构。只能是简单类型。

为什么不…

JSON

json让人不舒服,无法推广。

YAML

山药就像一个耙子花园。格式很复杂。 我不需要所有的未来。

Configparser

  1. configparser很难看;
  2. configparser的工程量过大;
  3. configparser没有类型转换;
  4. configparser没有类型检查;
  5. configparser是…configparser。

支持的类型

boolean:

simple ^{tt1}$ or ^{tt2}$, e.g. ^{tt3}$

int:

simple numeric type, e.g. ^{tt4}$

float:

float type, e.g. ^{tt5}$

string:

strings always uses quotes, e.g. ^{tt6}$

datetime:

datetime formated like as ISO 8601

  • ^{tt7}$
  • ^{tt8}$
  • ^{tt9}$
  • ^{tt10}$

When the time, you can set timezone as ^{tt11}$ or ^{tt12}$.

E.g.:

  • ^{tt13}$
  • ^{tt14}$
  • ^{tt15}$
  • ^{tt16}$
timedelta:

durations:

  • ^{tt17}$ — 20 minutes
  • ^{tt18}$ — 10 hours and 2 minutes
  • ^{tt19}$ — one week (7 days) and 2 seconds
  • ^{tt20}$ — one 2 second and 20 milliseconds
  • ^{tt21}$ — 694861001 milliseconds
list:

list of values:

^{pr 1}$

示例

$ cat tests/test.ini

# first comment[first]boolean=falseinteger=13[second]; second commentboolean=truestring="some string"[complex]list=
    "string"
    "string too"
    "else string"

简单阅读

>>>fromziniimportZini>>>ini=Zini()>>>result=ini.read('tests/test.ini')>>>isinstance(result,dict)True>>>result['first']['boolean']isFalse# automatic type castingTrue>>>result['first']['integer']==13True>>>result['second']['string']=="some string"True>>>result['complex']['list']==["string","string too","else string"]True

类型和默认值

>>>fromziniimportZini>>>ini=Zini()>>>ini['first']['integer']=str# set type>>>result=ini.read('tests/test.ini')zini.ParseError:errorinline3:'integer = 13'
>>>fromziniimportZini>>>ini=Zini()>>>ini['second']['boolean']="string"# set type and default value>>>result=ini.read('tests/test.ini')zini.ParseError:errorinline7:'boolean = true'

值列表
>>>importzini>>>ini=zini.Zini()>>>ini['third']['generic']=[str]>>>result=ini.read('tests/test.ini')ParseError:errorinline20:'    10'

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

推荐PyPI第三方库


热门话题
javai是JAXB的新手。如何将两个具有不同名称空间的不同xml合并为一个具有根元素的xml并将其解组?   JDO中的java应该是可传递的DefaultFetchGroup吗   java服务器配置问题   java在理解JList时遇到困难   java何时将RequestContextFilter用于Jersey?   java从数据库中读取文本文件。jar文件   Java正则表达式,仅适用于不包括零的正数   爪哇番石榴。类路径中的jar   JavaEE:关于设计的问题   java GUI,在面板中排列按钮   java Android为什么使用接口被认为是活动和片段之间通信的最佳实践?   java如何获取wicket图像的url以在开放图元标记中使用它   从Java字节[]>Base64>Javascript数组缓冲>Base64>byte[]   java正则表达式帮助字符串JWE766。1.pdf格式摘录766   java Hibernate,JPA忽略@Formula