是否有一个解析器可以读取和存储要写入的数据类型?文件格式必须产生可读性。Shelve不提供。
使用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,存储值的格式是可读的。
您可以使用以下函数
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)
有了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