• Java操作Python数据交互最佳实践




    1、Java与Python的互操作性


    在当今的软件开发领域,Java和Python都是备受欢迎的编程语言。Java以其跨平台性和可扩展性而闻名,而Python则因其简洁性和丰富的生态系统而备受喜爱。许多项目需要这两种语言之间的互操作性,以充分发挥它们的优势。本文将深入探讨Java和Python之间的互操作性,并通过具体实例分析,展示如何在这两种语言之间实现无缝的集成

    在这里插入图片描述
    Java和Python是两种常用的编程语言,分别在不同的领域有着广泛的应用。Java以其强大的跨平台能力和丰富的生态系统闻名,常用于大规模的企业应用程序开发。而Python则以其简洁的语法和强大的数据处理能力受到广大开发者的喜爱,常用于科学计算、数据分析和人工智能等领域

    在许多情况下,Java和Python之间的互操作性是非常重要的。例如,在一个大型企业系统中,Java可能用于后端服务和业务逻辑,而Python可能用于数据分析和机器学习任务。在这种情况下,两种语言需要能够协同工作,以实现全面的功能

    而实现Java与Python的互操作性,可能需要使用到Jython

    Jython是Python语言在Java平台的实现。Jython是一个使用Java虚拟机(JVM)作为运行环境的Python解释器。它允许你在Java平台上运行Python代码

    2、Java调用Python脚本及数据交互

    2.1、准备工作

    1)Python脚本准备

    首先,准备两个Python脚本,一个仅使用Python内置模块(库),另一个使用第三方库。本案例将演示Java如何调用包含与不包含Python第三方库的Python脚本,并传入与返回数据。以及解决最佳实践过程中所遇到的一些坑

    A、java2python.py仅使用Python内置模块,内容如下:

    # coding:utf-8
    
    from datetime import datetime
    
    print(datetime.now().strftime("%Y%m%d"))
    
    name = 'Tom'
    age = 18
    
    def add(x, y):
        return x + y
    
    # Jython不支持Python文件中字符串格式化:f"str{var}"
    def hello(n):
        return "Hello!" + n
    
    def no():
        print("无返回值!")
    
    if __name__ == '__main__':
        print(hello("hello方法"))
        print(add(3, 5))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    B、java2python1.py使用了Python第三方库,内容如下:

    import numpy as np
    import pandas as pd
    import sys
    
    df = pd.DataFrame({
       'name': ['Tom', '中文'], 'age': [18, np.nan]})
    print(df.to_string())
    
    def method(name, age):
        return {
       "name": name, "age": age}
    
    if __name__ == '__main__':
        print(f"正在执行Python脚本: {
         sys.argv[0]}")
        print(f"接收到Java传递的参数: {
         sys.argv[1:]}")
        print("正在处理数据...等待返回!")
        res = method(sys.argv[1], sys.argv[2])
        print(res)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    2)Java项目准备

    创建Maven项目,在pom.xml中导入需要使用的依赖:

    
    <dependency>
        <groupId>org.pythongroupId>
        <artifactId>jython-standaloneartifactId>
        <version>2.7.3version>
    dependency>
    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.13.1
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    [unity]多脚本情况下update函数的执行顺序
    基于C#制作一个串口通信调试软件
    【03】基础知识:React组件
    [NLP] LLM---<训练中文LLama2(五)>对SFT后的LLama2进行DPO训练
    CPU超高问题排查
    图片如何缩小不降低清晰度?
    蓝桥杯每日一题2023.11.21
    IntelliJ IDEA 2022.3正式发布,配置云同步&支持Redis好用到炸
    年薪高达50W的测开,到底是做什么的?
    计算机中的第一个伟大发明(IR/IAR)
  • 原文地址:https://blog.csdn.net/weixin_55629186/article/details/133942746