(使用Python 3.4.3 )
我想在配置文件中使用环境变量,并且我读到我应该使用SafeConfigParser
和os.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
将所有环境变量添加到其每个部分。
答案 0 :(得分:3)
如果我已理解您的问题以及您想要正确执行的操作,则可以通过 将os.environ
作为参数提供给{{1 }}。而是在使用SafeConfigParser
方法实际检索值时将其用作vars
关键字参数的值。
这是有效的,因为它避免了从所有环境变量创建默认部分,但允许在引用内插/扩展时使用它们的值。
get()