在 popen 调用中扩展/替换变量

Dan*_*izo 3 python subprocess popen

我正在尝试调用一些使用该环境的 shell 程序,并且我正在尝试找出正确的方法。我归结为这个片段:

import subprocess as sp

p = sp.Popen(["echo","Hello","$FOO"], env = {"FOO":"42"}, stdout = sp.PIPE, shell = True)
p.wait()
print(p.communicate())
Run Code Online (Sandbox Code Playgroud)

当“shell”设置为 True 时,它​​打印“('\n', None)”,当它设置为 False 时,它​​打印“('Hello $FOO\n', None)”,但我期望它打印一些东西沿着“('Hello 43\n', None)”的思路。我做错了什么,有更好的方法吗?

Pau*_*gor 5

尝试这个:

p = sp.Popen("echo Hello $FOO", env={"FOO":"42"}, shell=True)
Run Code Online (Sandbox Code Playgroud)

输出应该是“Hello 42”