How to use variables already defined in ConfigParser

前端 未结 3 357
余生分开走
余生分开走 2021-01-01 21:13

I\'m using ConfigParser in Python

config.ini is

[general]
name: my_name
base_dir: /home/myhome/exp

exe_dir: ${base_dir}/bin

Here I

相关标签:
3条回答
  • 2021-01-01 21:35

    In Python 3, you can use ${base_dir}/bin, and the extended interpolation allows you to use variables from other sections. Example:

    [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}
    
    0 讨论(0)
  • 2021-01-01 21:39

    You can use ConfigParser interpolation

    On top of the core functionality, SafeConfigParser supports interpolation. This means values can contain format strings which refer to other values in the same section, or values in a special DEFAULT section. Additional defaults can be provided on initialization.

    For example:

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

    would resolve the %(dir)s to the value of dir (frob in this case). All reference expansions are done on demand.

    Your example becomes:

    [general]
    name: my_name
    base_dir: /home/myhome/exp
    
    exe_dir: %(base_dir)s/bin
    
    0 讨论(0)
  • 2021-01-01 21:49

    Instead of "${foo}", write "%(foo)s". (See http://docs.python.org/library/configparser.html and search for "interpolation". This works for either an ordinary ConfigParser or a SafeConfigParser.)

    0 讨论(0)
提交回复
热议问题