使用os.path.expandvars时,可以防止空环境变量

时间:2016-06-13 23:27:53

标签: python path environment-variables

如何防止Python os.path.expandvars()处理null / unset环境变量?

来自os.path

  

格式错误的变量名称和对不存在的变量的引用保持不变。

>>> os.path.expandvars('$HOME/stuff')
'/home/dennis/stuff'
>>> os.path.expandvars('foo/$UNSET/bar')
'foo/$UNSET/bar'

我可以与其他路径处理(expanduser()realpath(), normpath()等分开执行此步骤,而不是将它们全部链接在一起并检查结果是否未更改,但是当没有变量存在时这是正常的 - 所以我还需要解析字符串以查看它是否有任何变量。我担心这可能不够健壮。

使用结果创建文件时,问题就出现了。我最终得到一个变量名称的文件作为文件名称的文字部分。我想反而拒绝输入。

1 个答案:

答案 0 :(得分:2)

您可以使用string.Template,它使用类似的美元符号语法进行变量插值,但如果某些内容不存在而不是将其留在其中,则会引发KeyError

import os
from string import Template
print(Template('$HOME/stuff').substitute(os.environ))