在Python中为os.path.expandpath使用自定义环境变量

时间:2014-12-10 07:18:25

标签: python python-3.x environment-variables

似乎Python的os.path.expandvars()函数在调用进程环境中运行。有没有办法将自己的新变量添加到混合而不污染流程环境?

我能想出的最好的是:

>>> env = os.environ
>>> env["FOO"] = "VAL"
>>> os.path.expandvars("variable FOO=$FOO")
'variable FOO=VAL'
>>> del env["FOO"] 

理想情况下,我想传递一个env参数,就像subprocess.Popen()一样。看来我必须自己编写这样的包装器吗?

1 个答案:

答案 0 :(得分:1)

这可能看起来很傻,但请尝试执行以下操作:

# Crete a new env and modify it
new_env = os.environ.copy()
new_env["FOO_VAR"] = "FOO_VALUE" 

# Replace the env e use expandvars
tmp_env = os.environ
os.environ = new_env
print(os.path.expandvars("variable FOO=$FOO_VAR"))

# Return to the old env
os.environ = tmp_env

顺便说一下,我最初使用正则表达式来识别 %(?.+)% 和 $\{?(?.+)\}?[/\\\n],但执行上述操作似乎更好。