【问题标题】:Use custom environment vars for os.path.expandpath in Python在 Python 中为 os.path.expandpath 使用自定义环境变量
【发布时间】:2015-02-08 07:25:31
【问题描述】:
似乎 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() 的参数一样。看来我得自己写这样的包装器了?
【问题讨论】:
标签:
python
python-3.x
environment-variables
【解决方案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],但执行上述操作似乎更好。