Python ini解析器

时间:2011-06-19 13:53:43

标签: python file ini configparser

是否有解析器可以读取和存储要写入的数据类型? 文件格式必须产生可读性。 Shelve不提供。

3 个答案:

答案 0 :(得分:1)

使用ConfigParser类以ini文件格式读取配置文件:

http://docs.python.org/library/configparser.html#examples

ini文件格式不存储存储值的数据类型(在读取数据时需要知道它们)。您可以通过以json格式编码值来克服此限制:

import simplejson
from ConfigParser import ConfigParser

parser = ConfigParser()
parser.read('example.cfg')

value = 123
#or value = True
#or value = 'Test'

#Write any data to 'Section1->Foo' in the file:
parser.set('Section1', 'foo', simplejson.dumps(value))

#Now you can close the parser and start again...

#Retrieve the value from the file:
out_value = simplejson.loads(parser.get('Section1', 'foo'))

#It will match the input in both datatype and value:
value === out_value

作为json,存储值的格式是人类可读的。

答案 1 :(得分:0)

您可以使用以下功能

def getvalue(parser, section, option):
    try:
        return parser.getint(section, option)
    except ValueError:
        pass
    try:
        return parser.getfloat(section, option)
    except ValueError:
        pass
    try:
        return parser.getbool(section, option)
    except ValueError:
        pass
    return parser.get(section, option)

答案 2 :(得分:0)

使用configobj库,它变得非常简单。

import sys
import json
from configobj import ConfigObj

if(len(sys.argv) < 2):
    print "USAGE: pass ini file as argument"
    sys.exit(-1)

config = sys.argv[1]
config = ConfigObj(config)

现在,您可以使用config作为dict来提取所需的配置。

如果您想将其转换为json,那也很简单。

config_json = json.dumps(config)
print config_json