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

发布于 2024-10-17 09:56:24 字数 346 浏览 6 评论 0原文

我在 Python

config.ini 中使用 ConfigParser 在

[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

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 want exp_dir becomes /home/myhome/exp/bin not ${base_dir}/bin.

It means ${base_dir} would be substituted to /home/myhome/exp automatically.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌上青苔 2024-10-24 09:56:24

您可以使用 ConfigParser 插值

除了核心功能之外,
SafeConfigParser 支持
插值。这意味着价值观可以
包含引用的格式字符串
同一部分中的其他值,或
特殊 DEFAULT 部分中的值。
可以提供额外的默认值
初始化。

例如:

<前><代码>[我的部分]
foodir: %(dir)s/随便
目录=frob
long:该值持续
在下一行

会将 %(dir)s 解析为值
dir(在本例中为 frob)。全部
参考扩展是在
需求。

你的例子变成:

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

exe_dir: %(base_dir)s/bin

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
清眉祭 2024-10-24 09:56:24

写“%(foo)s”而不是“${foo}”。 (请参阅 http://docs.python.org/library/configparser.html 并搜索“插值”。这适用于普通的 ConfigParser 或 SafeConfigParser。)

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.)

柠栀 2024-10-24 09:56:24

在 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}

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}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文