java和python的数据交互的两种方式

方案一:jpython
  • 需要在java中加载py文件生成拦截器,调用相应的方法
  • 传参需要转换成jpython中的相应类型

总结:自由度不够高,耦合性太强,且尚不得知py文件间存在依赖是否会引发问题。

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("C:\\Python27\\programs\\my_utils.py");
PyFunction func = (PyFunction) interpreter.get("adder",
    PyFunction.class);

int a = 2010, b = 2;
PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));
System.out.println("anwser = " + pyobj.toString());

参考链接:
https://blog.csdn.net/cafebar123/article/details/79394431
https://www.cnblogs.com/xuaijun/p/7986003.html

方案二:rest接口
  1. python的rest框架主要有:

    • Django,流行但是相对笨重
    • web.py,轻量,但据说作者仙逝无人维护
    • tornado,倡导自己造轮子,虽然是facebook开源
    • flask,简单易用(推荐使用)
  2. flask教程的参考链接:

  3. 使用方式大致如下:安装flask—import flask—定义方法并在方法上加路径注解等—启动服务

    import json
    from flask import Flask
    from flask import request
    from flask import redirect
    from flask import jsonify
    app = Flask(__name__)
    
    @app.route('/' , methods=['GET', 'POST'])
    def index():
        if request.method == 'POST':
            a = request.get_data()
            dict1 = json.loads(a)
            return json.dumps(dict1["data"])
        else:
            return '<h1>只接受post请求!</h1>'
    
    @app.route('/user/<name>')
    def user(name):
        return'<h1>hello, %s</h1>' % name
    
    if __name__ =='__main__':
        app.run(debug=True)
  1. 此外,flask支持json的数据传输,这就解决方案一自由度不够高、不够灵活的问题了,参考链接:
    https://segmentfault.com/a/1190000007605055

  2. flask的拓展库flask restful
    https://www.cnblogs.com/wbin91/p/5927506.html

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值