我在 Python 中使用 ConfigParser
config.ini 是
[general]
name: my_name
base_dir: /home/myhome/exp
exe_dir: ${base_dir}/bin
在这里我想exp_dir
变成/home/myhome/exp/bin
没有${base_dir}/bin
。
这意味着${base_dir}
将被替换为/home/myhome/exp automatically
。
我在 Python 中使用 ConfigParser
config.ini 是
[general]
name: my_name
base_dir: /home/myhome/exp
exe_dir: ${base_dir}/bin
在这里我想exp_dir
变成/home/myhome/exp/bin
没有${base_dir}/bin
。
这意味着${base_dir}
将被替换为/home/myhome/exp automatically
。
您可以使用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)s”代替“${foo}”。(参见http://docs.python.org/library/configparser.html并搜索“interpolation”。这适用于普通的 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}