SafeConfigParser:部分和环境变量

时间:2016-09-09 09:19:35

标签: python environment-variables python-3.4 configparser

使用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将所有环境变量添加到其每个部分。

1 个答案:

答案 0 :(得分:3)

如果我已理解您的问题以及您想要正确执行的操作,则可以通过 os.environ作为参数提供给{{1 }}。而是在使用SafeConfigParser方法实际检索值时将其用作vars关键字参数的值。

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

get()