跳转到主要内容

具有方案和类型的INI文件解析器

项目描述

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

具有方案和类型的INI文件解析器

Zini的哲学

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

为什么不...

JSON?

JSON不舒服且不可扩展。

YAML?

YAML就像一个扫帚园。它是一个非常复杂的格式。我不需要它的所有功能。

Configparser?

  1. Configparser很丑;

  2. Configparser过度设计;

  3. Configparser没有类型转换;

  4. Configparser没有类型检查;

  5. Configparser是… configparser.

支持的类型

boolean:

简单的truefalse,例如 key = true

int:

简单的数值类型,例如 key = 13

float:

浮点类型,例如 key = 3.14

string:

字符串始终使用引号,例如 key = "some string"

datetime:

遵循ISO 8601格式的datetime

  • YYYY-MM-DD

  • YYYY-MM-DD hh:mm

  • YYYY-MM-DD hh:mm:ss

  • YYYY-MM-DD hh:mm:ss.sss

当时间时,您可以将时区设置为Z±hh:mm

例如:

  • key = 2005-01-13

  • key = 2005-01-13 18:05:00

  • key = 2005-01-13 15:05:00 +03:00

  • key = 2005-01-13 15:00Z

timedelta:

持续时间

  • key = 20m — 20分钟

  • key = 10h2m — 10小时和2分钟

  • key = 1w2s — 一周(7天)和2秒

  • key = 1s20ms — 2秒和20毫秒

  • key = 1w1d1h1m1s1ms — 694861001毫秒

list:

值列表

key =
    "string value"
    2005-01-13 18:00:05
    13

示例

$ cat tests/test.ini

# first comment
[first]
boolean = false
integer = 13

[second]
; second comment
boolean = true
string = "some string"

[complex]
list =
    "string"
    "string too"
    "else string"

简单读取

>>> from zini import Zini
>>> ini = Zini()
>>> result = ini.read('tests/test.ini')
>>> isinstance(result, dict)
True
>>> result['first']['boolean'] is False  # automatic type casting
True
>>> result['first']['integer'] == 13
True
>>> result['second']['string'] == "some string"
True
>>> result['complex']['list'] == ["string", "string too", "else string"]
True

类型和默认值

>>> from zini import Zini
>>> ini = Zini()
>>> ini['first']['integer'] = str  # set type
>>> result = ini.read('tests/test.ini')
zini.ParseError: error in line 3: 'integer = 13'
>>> from zini import Zini
>>> ini = Zini()
>>> ini['second']['boolean'] = "string"  # set type and default value
>>> result = ini.read('tests/test.ini')
zini.ParseError: error in line 7: 'boolean = true'

值列表

>>> import zini
>>> ini = zini.Zini()
>>> ini['third']['generic'] = [str]
>>> result = ini.read('tests/test.ini')
ParseError: error in line 20: '    10'

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

zini-1.1.0.tar.gz (5.2 kB 查看散列)

上传时间

构建分发

zini-1.1.0-py3-none-any.whl (5.1 kB 查看散列)

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面