调用另一个 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()
我有一个现有的 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()