我有shell脚本。它有:
./dtapi get_probability decision_tree simulated_diabetes_incidence_data_new.txt AGE 70 weight 34 height 5.5 sex 0 ds1 34
现在我尝试用python脚本执行这个shell脚本,并将结果存储到某个变量中。测试.py包含-
import os, sys
result = os.system("sh cmd_dtapi.sh")
print "Result is : ", result
但它的行为是这样的:
python test.py
{"risk_of_disease":"2.122e-314"}Result is : 0
结果直接打印,赋值采用0
。你知道吗
如何将结果存储到某个变量中?你知道吗
更新
在回答之后-
import subprocess
import json
result_process_output = subprocess.check_output("sh cmd_dtapi.sh")
result_json = json.loads(result_process_output)
result = result_json["risk_of_disease"]
print "Result is : ", result
给予
Traceback (most recent call last):
File "test.py", line 3, in <module>
result_process_output = subprocess.check_output("sh cmd_dtapi.sh")
File "/usr/lib/python2.7/subprocess.py", line 566, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Here是
os.system()
的描述:也就是说,shell将
{risk_of_disease":"2.122e-314"}
打印到标准输出。你知道吗至于
os.system()
返回0
:所以shell脚本的返回代码是
0
,它被分配给result
。所以从技术上讲,您已经将结果存储在变量中了。你知道吗@编辑:
要解决这个问题,您需要使用
subprocess
模块,它允许对系统调用进行更详细的操作。你知道吗相关问题 更多 >
编程相关推荐