带模式和类型的ini文件解析器
zini的Python项目详细描述
带模式和类型的ini文件解析器
zini的哲学
应用程序的设置必须简单! 它应该是一个代码或复杂的结构。只能是简单类型。
为什么不…
JSON?
json让人不舒服,无法推广。
YAML?
山药就像一个耙子花园。格式很复杂。 我不需要所有的未来。
Configparser?
- configparser很难看;
- configparser的工程量过大;
- configparser没有类型转换;
- configparser没有类型检查;
- 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
When the time, you can set timezone as ^{tt11}$ or ^{tt12}$. E.g.:
|
timedelta: | durations:
|
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'