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

Java操作Python最佳实践

    • 1、Java与Python的互操作性
    • 2、Java调用Python脚本及数据交互
      • 2.1、准备工作
      • 2.2、执行一段Python代码
      • 2.3、执行Python文件脚本
      • 2.4、执行Python文件中的指定方法
      • 2.5、执行含有第三方库的Python文件
    • 3、附录(完整代码)

1、Java与Python的互操作性


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

Java操作Python及数据交互最佳实践_第1张图片
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))

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)

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.1version>

你可能感兴趣的:(#,Python,#,Java,java,python,交互)