将Shell脚本执行结果分配给变量

用户123

我有外壳脚本。其中有 :

./dtapi get_probability decision_tree simulated_diabetes_incidence_data_new.txt  AGE 70 weight 34 height 5.5 sex 0 ds1 34

现在,我尝试使用python脚本执行此shell脚本,并将结果存储到某个变量中。test.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
托马斯·普拉斯科塔(Tomasz Plaskota)

是描述os.system()

在子外壳程序中执行命令(字符串)。这是通过调用标准C函数system()来实现的,并且具有相同的限制。sys.stdin等的更改不会反映在已执行命令的环境中。如果命令生成任何输出,它将被发送到解释器标准输出流。

这意味着您的外壳会打印{risk_of_disease":"2.122e-314"}到标准输出。

至于os.system()退货0

在Windows上,返回值是运行命令后系统外壳程序返回的值。该外壳程序由Windows环境变量COMSPEC给出:它通常是cmd.exe,它返回命令运行的退出状态。在使用非本机Shell的系统上,请查阅您的Shell文档。

因此,您的shell脚本的返回代码为,0并将其分配给result因此,从技术上讲,您已经将结果存储在变量中。

@编辑:

要解决问题,您需要使用subprocess允许对系统调用进行更详细操作的模块。

import subprocess
import json
result_process_output = subprocess.check_output("sh cmd_dtapi.sh", shell=True)
result_json = json.loads(result_process_output)
result = result_json["risk_of_disease"]
print "Result is : ", result

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash脚本,从另一个shell执行shell并将结果分配给变量

来自分类Dev

bash脚本,从另一个shell执行shell并将结果分配给变量

来自分类Dev

Vagrantfile:将嵌入式shell脚本的结果分配给变量

来自分类Dev

如何将查询结果分配给shell变量

来自分类Dev

Shell脚本-无法将随机值分配给变量

来自分类Dev

将“ awk”或“ nawk”分配给shell脚本中的变量

来自分类Dev

将“测试”的结果分配给变量

来自分类Dev

将sed结果分配给变量

来自分类Dev

将函数的结果分配给变量?

来自分类Dev

将typeid的结果分配给变量

来自分类Dev

将操作分配给Automator中的变量以在Shell脚本中使用

来自分类Dev

将STDOUT分配给变量时的Shell脚本错误处理

来自分类Dev

将 memcache 命令的输出分配给 shell/bash 脚本中的变量

来自分类Dev

未在Shell脚本中将值分配给变量

来自分类Dev

未在Shell脚本中将值分配给变量

来自分类Dev

如何将sed的结果分配给变量

来自分类Dev

如何将awk结果分配给变量

来自分类Dev

将变量分配给sql查询结果

来自分类Dev

如何将查询结果分配给变量?

来自分类Dev

将For Xml和With子句的结果分配给变量

来自分类Dev

如何将sed的结果分配给变量

来自分类Dev

将mysql数组结果分配给php变量

来自分类Dev

如何将查找结果分配给变量

来自分类Dev

将ajax请求结果分配给AngularJS中的变量

来自分类Dev

无法将函数结果分配给变量

来自分类Dev

awk将命令结果分配给变量

来自分类Dev

将 PHP 变量分配给 SQL 的结果

来自分类Dev

将异步方法的结果分配给变量

来自分类Dev

如何将选择的结果分配给 sqlplus 变量