Как читать конфиг из строки или списка?
Можно ли прочитать конфигурацию для ConfigParser
из строки или списка?
Без какого-либо временного файла в файловой системе
ИЛИ
Есть ли подобное решение для этого?
Ответы
Ответ 1
Вы можете использовать буфер, который ведет себя как файл:
Python 3 решение
import configparser
import io
s_config = """
[example]
is_real: False
"""
buf = io.StringIO(s_config)
config = configparser.ConfigParser()
config.read_file(buf)
print(config.getboolean('example', 'is_real'))
В Python 2.7 эта реализация была правильной:
import ConfigParser
import StringIO
s_config = """
[example]
is_real: False
"""
buf = StringIO.StringIO(s_config)
config = ConfigParser.ConfigParser()
config.readfp(buf)
print config.getboolean('example', 'is_real')
Ответ 2
Вопрос был помечен как python-2.7, но только для полноты: с 3.2 вы можете использовать функцию ConfigParser read_string(), чтобы вам больше не нужен метод StringIO.
import configparser
s_config = """
[example]
is_real: False
"""
config = configparser.ConfigParser()
config.read_string(s_config)
print(config.getboolean('example', 'is_real'))
Ответ 3
Python имеет read_string
и read_dict
начиная с версии 3.2. Он не поддерживает чтение из списков.
В примере показано чтение из словаря. Ключи - это имена разделов, значения - это словари с ключами и значениями, которые должны присутствовать в разделе.
#!/usr/bin/env python3
import configparser
cfg_data = {
'mysql': {'host': 'localhost', 'user': 'user7',
'passwd': 's$cret', 'db': 'ydb'}
}
config = configparser.ConfigParser()
config.read_dict(cfg_data)
host = config['mysql']['host']
user = config['mysql']['user']
passwd = config['mysql']['passwd']
db = config['mysql']['db']
print(f'Host: {host}')
print(f'User: {user}')
print(f'Password: {passwd}')
print(f'Database: {db}')
Ответ 4
Это также может быть полезно. Он показывает вам, как читать строки, используя конфигурацию (файл CFG).
Вот базовый конфигурационный ридер, который я сделал с информацией, которую я собрал из Интернета:
import configparser as cp
config = cp.ConfigParser()
config.read('config.cfg')
opt1=config.getfloat('Section1', 'option1')
opt2=config.getfloat('Section1', 'option2')
opt3=config.get('Section1', 'option3')
print('Config File Float Importer example made using\n\
http://stackoverflow.com/info/18700295/standard-way-of-creating-config-file-suitable-for-python-and-java-together\n\
and\n\
https://docs.python.org/2/library/configparser.html\n\
. (Websites accessed 13/8/2016).')
print('option1 from Section1 =', opt1, '\n Option 2 from section 1 is', str(opt2), '\nand option 3 from section 1 is "'+opt3+'".')
input('Press ENTER to exit.')