Я пытаюсь использовать ConfigParser
в следующей ситуации. Я запускаю некоторый код, после которого у меня есть объект с несколькими атрибутами. Я выбираю некоторые из этих атрибутов и записываю их в файл .ini
с помощью configparser
. Это отлично работает, и мой файл .ini
выглядит примерно так.
[Section]
path = "D:\\"
number = 10.0
boolean = False
Затем с помощью другого скрипта я хочу прочитать файл и добавить элементы в качестве атрибутов к другому объекту (самостоятельно).
parser.read('file.ini')
self.__dict__.update(dict(parser.items("Section")))
Это не удается, потому что все значения считываются configparser как строки, и теперь все атрибуты являются строками. parser.items("Section")
выглядит так:
[('path', '"D:\\"'), ('number', '10.0'), ('boolean', 'False')]
Теперь я мог пойти и указать числа с плавающей запятой, целые числа и логические значения по их ключам и использовать соответствующие методы parser.getfloat
, getint
и getboolean
для получения правильных типов Python. Однако это означает создание дополнительного списка ключей и цикла для их получения для каждого типа данных, чего я не хочу. Кроме того, даже путь теперь заключен в двойные кавычки, и мне нужно начать удалять кавычки.
Такое поведение делает ConfigParser
почти полностью бесполезным для меня, и я сомневаюсь, правильно ли я его использую, и если ConfigParser
- лучший вариант для моей цели, которая состоит в том, чтобы просто записать атрибуты объекта в файл, а позже прочитать файл и добавить параметры нового объекта в качестве атрибутов. Могу ли я эффективно использовать ConfigParser
для этого? Или мне начать искать другой метод?
eval
, но здесь можно было бы:{item[0]: eval(item[1]) for item in parser.items('section')}
- person Arount   schedule 31.07.2017