调用另一个 python 并捕获变量中的输出

calling another python and capturing the output in variables

我有一个现有的 python 脚本,其命令参数输出如下所示的字符串。我正在尝试将其调用到另一个 python 脚本中,并通过另一个变量动态传递 prodName。

我尝试了类似这样的方法:

#!/usr/bin/env python
import subprocess

subprocess.call("/usr/st/getProdID.py ProdName=someProd_name Prod_config=/usr/st/prod/prod_id.txt", shell=True)

输出:

Ad897

我无法将此输出重定向到变量

#!/usr/bin/env python
import subprocess

pid = subprocess.call("/usr/st/getProdID.py ProdName=someProd_name Prod_config=/usr/st/prod/prod_id.txt", shell=True)
print "pid = ", pid

输出:

Ad897

Pid = 0

感谢任何帮助。谢谢!

有了 Python3 你可以 运行:

p = subprocess.run(["getProdID.py", f"ProdName={prod}", "Prod_config=/usr/st/prod/prod_id.txt"], capture_output=True)
output = p.stdout

在 Python2 上,事情变得更加棘手:

p = subprocess.Popen(["getProdID.py", "ProdName={0}".format(prod), "Prod_config=/usr/st/prod/prod_id.txt"], stdout=subprocess.PIPE)
output = p.stdout.read()