我有一个python脚本calculate.py,其中包含一个函数,如下所示
def mytest():
Y_pred = {}
Y_pred['a'] = [1,2,3]
Y_pred['b'] = [45,54,77]
return Y_pred
现在从python控制台我想使用subprocess运行python脚本并将返回值“Y_pred”变为变量。所以我想要从终端
下面的伪代码python3
>>> import subprocess
>>> returned_val = subprocess.call([run calculate.py here and call mytest() ])
最后,我希望将mytest()
的返回值变为变量returned_val
。
答案 0 :(得分:1)
你需要做一些事情。
首先,在calculate.py
调用mytest
函数,最后添加以下内容:
if __name__ == '__main__':
print(mytest())
现在,当您执行calculate.py
脚本(例如使用python3 /path/to/calculate.py
)时,您将获得mytest
的返回值作为输出。
好的,现在您可以使用subprocess.check_output
来执行脚本,并获得输出:
returned_bin = subprocess.check_output('/usr/bin/python3 /path/to/calculate.py'.split())
相应地替换路径。
returned_val
的值为二进制字符串。您需要解码它以获取相应的文本字符串:
returned_val = returned_bin.decode('utf-8') # assuming utf-8
现在,由于myfunc
的返回值为dict
,而returned_val
中的返回值为字符串,
您可以使用json.loads(returned_val)
来获得相同的dict
代表。
答案 1 :(得分:1)
subprocess.check_output
import subprocess
[ print(i) for i in subprocess.check_output(['ls']).split() ]
输出,我当前的目录:
b'a.sh'
b'app'
b'db'
b'old.sh'