#python-3.x
#python-3.x
Вопрос:
Я разбираю файл config.ini с помощью python ConfigParser, но если в моем файле конфигурации нет определенного элемента, то возникает ошибка. Я хочу установить проверку, чтобы при попытке получить значение, которого нет в файле конфигурации, оно должно возвращать None.
Ниже приведен класс анализатора конфигурации, который я написал.
from configparser import ConfigParser
class MyConfiguration(object):
def __init__(self, *file_names):
# print(file_names)
parser = ConfigParser()
# parser.optionxform = str
found = parser.read(file_names)
if not found:
raise ValueError('No config file found!')
for section in parser.sections():
# print(section)
# print(parser.items(section))
self.__dict__.update(parser.items(section))
config = MyConfiguration(FILE1, FILE2)
чтобы использовать любой элемент из конфигурационного файла, я вызываю config.key
Ожидание: если я попытаюсь получить config.key_unknown
то, что недоступно, оно должно вернуть None
Ответ №1:
Вместо установки ключей в словаре, вам, вероятно, следует использовать __getattr__
:
from configparser import ConfigParser
class MyConfiguration(object):
def __init__(self, *file_names):
# print(file_names)
parser = ConfigParser()
# parser.optionxform = str
found = parser.read(file_names)
if not found:
raise ValueError('No config file found!')
self._parser = parser
def __getattr__(self, key):
for section in self._parser.sections():
if key in section:
return section[key]
return None
Комментарии:
1. и как получить значения, используя class object?
2. потому что, если я все еще пытаюсь config._parser.get(«атрибуты», «key_unknown»), он все равно выдает ошибку configparser. Ошибка NoOptionError: нет опции ‘key_unknown’ в разделе: ‘атрибуты
3. @Arun Просто сделай
config.key_unknown
.4. он возвращает None даже для ключей, присутствующих в файле конфигурации
5. @Arun Ах. На самом деле это удивительно. Я думаю, это чувствительно к регистру; вы это проверили?