我正在尝试使用python从config.ini文件导入CONFIG
详细信息。我能够将所有详细信息输入字典。但是,字典也包含[DEFAULT]
值。
如何将默认配置排除在插入字典之外。
Python代码:
config = configparser.ConfigParser()
config.read("C:/config.ini")
dictionary = {}
for section in config.sections():
dictionary[section] = {}
for option in config.options(section):
print(section, option, config.get(section, option))
dictionary[section][option] = config.get(section, option)
配置文件:需要从插入中排除CONCEPT_REFERENCE
和SCHEME
。
[DEFAULT]
CONCEPT_REFERENCE = http://www.xbrl.org/2003/arcrole/concept-reference
SCHEME = http://xbrl.org/entity/identification/scheme
[SQL]
SERVER_NAME = USER\MSSQLSERVER01
DATABASE = MYDB
[NAME]
path_to_log_file = C:/logs/
path_to_output_files = C:/Map/
答案 0 :(得分:0)
import configparser
from configparser import NoSectionError
from pprint import pprint
class ConfigParser(configparser.ConfigParser):
"""Can get options() without defaults
"""
def options(self, section, no_defaults=False, **kwargs):
if no_defaults:
try:
return list(self._sections[section].keys())
except KeyError:
raise NoSectionError(section)
else:
return super().options(section, **kwargs)
config = ConfigParser()
config.read("test.ini")
dictionary = {}
for section in config.sections():
dictionary[section] = {}
for option in config.options(section,no_defaults=True):
dictionary[section][option] = config.get(section, option)
>>> {'NAME': {'path_to_log_file': 'C:/Arelle-master/arelle/plugin/ferc/data_migration/logs/',
'path_to_output_files': 'C:/Arelle-master/arelle/plugin/ferc/data_migration/DATA_Map/'},
'SQL': {'database': 'MYDB', 'server_name': 'USER\\MSSQLSERVER01'}}
如果您想在字典中包含[DEFAULT]
部分属性,只是不要在循环中传递no_default=True
。
config = ConfigParser()
config.read("test.ini")
dictionary = {}
for section in config.sections():
dictionary[section] = {}
for option in config.options(section):
# print(section, option, config.get(section, option))
dictionary[section][option] = config.get(section, option)
pprint(dictionary)
{'NAME': {'concept_reference': 'http://www.xbrl.org/2003/arcrole/concept-reference',
'path_to_log_file': 'C:/Arelle-master/arelle/plugin/ferc/data_migration/logs/',
'path_to_output_files': 'C:/Arelle-master/arelle/plugin/ferc/data_migration/DATA_Map/',
'scheme': 'http://xbrl.org/entity/identification/scheme'},
'SQL': {'concept_reference': 'http://www.xbrl.org/2003/arcrole/concept-reference',
'database': 'MYDB',
'scheme': 'http://xbrl.org/entity/identification/scheme',
'server_name': 'USER\\MSSQLSERVER01'}}