Python 如何使用ConfigParser中已定义的变量

Python 如何使用ConfigParser中已定义的变量,python,configparser,Python,Configparser,我正在Python中使用ConfigParser config.ini是 [general] name: my_name base_dir: /home/myhome/exp exe_dir: ${base_dir}/bin 这里我想exp\u dir变成/home/myhome/exp/bin而不是${base\u dir}/bin 这意味着${base\u dir}将自动替换为/home/myhome/exp您可以使用插值 在核心功能的基础上, SafeConfigParser支持 插值

我正在Python中使用ConfigParser

config.ini是

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

exe_dir: ${base_dir}/bin
这里我想
exp\u dir
变成
/home/myhome/exp/bin
而不是
${base\u dir}/bin

这意味着
${base\u dir}
将自动替换为
/home/myhome/exp

您可以使用插值

在核心功能的基础上, SafeConfigParser支持 插值这意味着价值观可以改变 包含引用的格式字符串 同一节中的其他值,或 特殊默认部分中的值。 可以在上提供其他默认值 初始化

例如:

[My Section] 
foodir: %(dir)s/whatever 
dir=frob 
long: this value continues    
    in the next line 
将%(dir)解析为该值 在本例中为frob。全部的 引用扩展在上完成 要求

你的例子变成:

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

exe_dir: %(base_dir)s/bin

将“${foo}”改为“%(foo)s”。(请参阅并搜索“插值”。这适用于普通ConfigParser或SafeConfigParser。)

在Python3中,可以使用
${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}

谢谢在我的代码中,
%(foo)
之后缺少的
s
让我发疯。有时,在你意识到它也在文档中之前,你必须先查看源代码<代码>configparser.configparser(插值=configparser.ExtendedInterpolation())