Как использовать переменные, уже определенные в 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 и String с переменной env
  • Python: ConfigParser.NoSectionError: Нет раздела: 'TestInformation'
  • Python ConfigParser - значения между кавычками
  • ConfigParser и раздел со значениями без ключей
  • Python - лучший язык программирования в мире.