shell脚本调用pyhton脚本,获取返回值

冷不防 2022-09-11 01:28 374阅读 0赞

方案一(查看很多博客,用这种方法,感觉是靠谱的,可自己运行报错SyntaxError: invalid syntax,这个应该是导入未生效,所有调用python里方法就报错了,用不了,不知道是否和我python版本有关系,python3.6)shell脚本调用如下:

  1. res=`python -c 'import test; print test.get_test_list(${param_name})'`
  2. echo $res

方案二(由于上一种方法,报错,只有选择这种方案,虽然并不是很完美,python文件中print的内容都能输出,但勉强能用,把多余的print去掉了,只留了自己想要的输出)shell脚本调用如下:

  1. res=$(python3 ${ BASE_DIR}/test.py ${ param_name} 2>&1)
  2. echo "res: $res"

shell脚本调用python代码示例,执行shell脚本时:./test.sh params_name
test.sh代码示例

  1. #!/bin/bash
  2. echo "${BASH_SOURCE[0]}"
  3. # /home/dev/work
  4. RUN_DIR=$( cd "$( dirname "${ BASH_SOURCE[0]}" )" && pwd )
  5. res=$(python3 ${ RUN_DIR}/test.py -arg ${ param_name} 2>&1)
  6. echo "res: $res"
  7. # ['t1', 't1_0', 't1_1', 't1_2', 't1_3', 't1_4', 't1_5', 't1_6', 't1_7']
  8. ary=(${ res//,/ })
  9. count=${ #ary[*]}
  10. echo "count: $count"
  11. # 8

python代码示例,请注意了,main函数接收调用参数的,python的main函数接收调用参数:param_1 = sys.argv[1],main函数执行代码逻辑的!
test.py代码示例:

  1. #!/usr/bin/env python
  2. # _*_ coding:utf-8 _*_
  3. import sys
  4. import json
  5. import requests
  6. import ast
  7. def get_test_list(param_name):
  8. url_test = 'http://localhost:8080/data.demo/querydata'
  9. json_object = {
  10. 'param_name': param_name
  11. }
  12. #print(json_object)
  13. head = { 'Content-Type': 'application/json'}
  14. res = requests.post(url=url_test, json=json_object, headers=head).text
  15. #print(res)
  16. res_json = json.loads(res)
  17. #print(res_json)
  18. code = res_json['code']
  19. if code == '200':
  20. param_test = ast.literal_eval(res_json['data'][0]['test'])
  21. # print(param_test)
  22. else:
  23. param_test = None
  24. return param_test
  25. if __name__ == '__main__':
  26. #获取调用python脚本时的参数:sys.argv[1]
  27. param_1 = sys.argv[1]
  28. res = get_test_list(param_1)
  29. print(res)

发表评论

表情:
评论列表 (有 0 条评论,374人围观)

还没有评论,来说两句吧...

相关阅读