如何防止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()
等分开执行此步骤,而不是将它们全部链接在一起并检查结果是否未更改,但是当没有变量存在时这是正常的 - 所以我还需要解析字符串以查看它是否有任何变量。我担心这可能不够健壮。
使用结果创建文件时,问题就出现了。我最终得到一个变量名称的文件作为文件名称的文字部分。我想反而拒绝输入。
答案 0 :(得分:2)
您可以使用string.Template
,它使用类似的美元符号语法进行变量插值,但如果某些内容不存在而不是将其留在其中,则会引发KeyError
。
import os
from string import Template
print(Template('$HOME/stuff').substitute(os.environ))