Python ini parser - PullRequest
       10

Python ini parser

2 голосов
/ 19 июня 2011

Есть ли парсер, который читает и сохраняет типы данных для записи?Формат файла должен производить читабельный.Полка не предлагает.

Ответы [ 3 ]

1 голос
/ 19 июня 2011

Используйте класс 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, формат хранимого значения удобочитаем.

0 голосов
/ 09 августа 2017

С библиотекой 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 в качестве указания для извлечения желаемой конфигурации.

Если вы хотите преобразовать его в json, это тоже просто.

config_json = json.dumps(config)
print config_json
0 голосов
/ 19 июня 2011

Вы можете использовать следующую функцию

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)
...