web-dev-qa-db-ja.com

文字列またはリストから構成を読み取る方法は?

文字列またはリストからConfigParserの構成を読み取ることはできますか?
ファイルシステムにいかなる種類の一時ファイルもない

[〜#〜]または[〜#〜]
同様の解決策はありますか?

20
Lucas

ファイルのように動作するバッファを使用できます:Python solution

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')
28
Noel Evans

質問はpython-2.7としてタグ付けされましたが、完全を期すためです。3.2以降は ConfigParser function 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'))
18
Sebastian

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}')
0
Jan Bodnar