【问题标题】: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],但执行上述操作似乎更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 2015-10-17
      • 1970-01-01
      相关资源
      最近更新 更多