Как использовать переменные, уже определенные в ConfigParser

Я использую ConfigParser в Python

config.ini –

[general] name: my_name base_dir: /home/myhome/exp exe_dir: ${base_dir}/bin 

Здесь я хочу, чтобы exp_dir стал /home/myhome/exp/bin not ${base_dir}/bin .

Это означает, что ${base_dir} будет /home/myhome/exp automatically заменен на /home/myhome/exp automatically .

3 Solutions collect form web for “Как использовать переменные, уже определенные в ConfigParser”

Вы можете использовать интерполяцию ConfigParser

В дополнение к основной функциональности SafeConfigParser поддерживает интерполяцию. Это означает, что значения могут содержать строки форматирования, которые относятся к другим значениям в том же разделе или значениям в специальном разделе DEFAULT. При инициализации могут быть предоставлены дополнительные значения по умолчанию.

Например:

 [My Section] foodir: %(dir)s/whatever dir=frob long: this value continues in the next line 

будет разрешать% (dir) s значению dir (frob в этом случае). Все эталонные расширения выполняются по требованию.

Ваш пример:

 [general] name: my_name base_dir: /home/myhome/exp exe_dir: %(base_dir)s/bin 

Вместо «$ {foo}» напишите «% (foo) s». (См. http://docs.python.org/library/configparser.html и выполните поиск «интерполяции». Это работает либо для обычного ConfigParser, либо для SafeConfigParser.)

В Python 3 вы можете использовать ${base_dir}/bin , а расширенная интерполяция позволяет использовать переменные из других разделов. Пример:

 [Common] home_dir: /Users library_dir: /Library system_dir: /System macports_dir: /opt/local [Frameworks] Python: 3.2 path: ${Common:system_dir}/Library/Frameworks/ [Arthur] nickname: Two Sheds last_name: Jackson my_dir: ${Common:home_dir}/twosheds my_pictures: ${my_dir}/Pictures python_dir: ${Frameworks:path}/Python/Versions/${Frameworks:Python} 
  • Как удалить белые символы из файла конфигурации?
  • ConfigParser и раздел со значениями без ключей
  •  
    Interesting Posts for Van-Lav

    Чтение частей файла CSV размером ~ 13000 строк с помощью pandas read_csv и nrows

    Простой способ удалить несколько пробелов в строке в Python

    Как я могу выполнять задания в понимании списка?

    Использование строки в качестве имени переменной

    Как загрузить несколько файлов в моделях администратора django

    Преобразование нечисловых кортежей в матрицу numpy

    Python 3 – Может ли мариновать байтовые объекты размером более 4 ГБ?

    Matplotlib colormap, участок рассеяния, передающий третью переменную для цвета: недопустимый аргумент RGBA

    Такая же производительность у разных работников в многопроцессорной обработке

    компоновка модуля python

    Массовое обновление в SQLAlchemy Core с использованием WHERE

    Очистить кеш отражения sqlalchemy

    Перемещение между базами данных на диске и быстрой базой данных в памяти?

    присвоение значения переменной оболочки с использованием возвращаемого значения функции из Python

    Подпроцесс Python Ctrl + C

    Python - лучший язык программирования в мире.