gpt4 book ai didi

python - 安全配置解析器 : sections and environment variables

转载 作者:太空宇宙 更新时间:2023-11-04 00:46:23 25 4
gpt4 key购买 nike

(使用 Python 3.4.3)

我想在我的配置文件中使用环境变量,我读到我应该使用 SafeConfigParseros.environ 作为参数来实现它。

[test]
mytest = %(HOME)s/.config/my_folder

因为我需要获取一个部分中的所有选项,所以我正在执行以下代码:

userConfig = SafeConfigParser(os.environ)
userConfig.read(mainConfigFile)
for section in userConfig.sections():
for item in userConfig.options(section):
print( "### " + section + " -> " + item)

我的结果不是我所期望的。正如您在下面看到的,它不仅有我在我的部分 ([test]\mytest) 中的选项,还有所有环境变量:

### test -> mytest
### test -> path
### test -> lc_time
### test -> xdg_runtime_dir
### test -> vte_version
### test -> gnome_keyring_control
### test -> user

我做错了什么?

我希望能够将 [test]\mytest 解析为 /home/myuser/.config/my_folder 但不想要 SafeConfigParser 将我所有的环境变量添加到它的每个部分。

最佳答案

如果我理解了你的问题以及你想正确做什么,你可以通过提供 os.environ 来避免这个问题SafeConfigParser 的参数。当您使用 get() 方法实际检索值时,而是将其用作 vars 关键字参数的值。

这是有效的,因为它避免了从所有环境变量中创建一个默认部分,但允许在为插值/扩展目的引用时使用它们的值。

userConfig = SafeConfigParser()  # DON'T use os.environ here
userConfig.read(mainConfigFile)

for section in userConfig.sections():
for item in userConfig.options(section):
value = userConfig.get(section, item, vars=os.environ) # use it here
print('### [{}] -> {}: {!r}'.format(section, item, value))

关于python - 安全配置解析器 : sections and environment variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39408101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com