Java调用python文件

1、Win+R打开运行窗口输入“cmd”,点击【确定】或者回车键。

2、python -V查看Python版本(注意:python空格-V,V大写) 或输入python --version查看。

若没有python环境去官网下载: https://www.python.org/downloads/windows/

3、编写.py文件

from datetime import datetime
import sys

def calculate_age(id_number):
    # 假设生日信息在身份证号的第七位到第十四位
    birthday_str = id_number[6:14]
    
    # 将生日字符串转换为日期格式
    birthday = datetime.strptime(birthday_str, '%Y%m%d')
    
    # 获取当前日期
    current_date = datetime.now()
    
    # 计算年龄
    age = current_date.year - birthday.year - ((current_date.month, current_date.day) < (birthday.month, birthday.day))
    
    return age

if __name__ == "__main__":
    # 获取命令行参数
    if len(sys.argv) != 2:
        print("请提供身份证号码作为参数")
    else:
        id_number = sys.argv[1]
        age = calculate_age(id_number)
        print(age)  # 直接输出年龄信息

注:该文件我命名的js.py,可自行更改。

4、编写Java文件

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CallPythonScript {
    public static void main(String[] args) {
        try {
            String pythonScriptPath = "C:/tools/PythonProject/test/js.py"; // 替换为你的 Python 脚本路径
            String idNumber = "440308199001011234"; // 替换为你的身份证号码
            String pythonInterpreter = "C:/environment/Python/python.exe"; // 将路径替换为你的 Python 解释器路径
            ProcessBuilder pb = new ProcessBuilder(pythonInterpreter, pythonScriptPath, idNumber);
            pb.redirectErrorStream(true); // 将错误流合并到输出流
            Process process = pb.start();
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println("您好,请记住您的年龄 "+line+"岁"); // 输出来自Python脚本的信息
            }
            int exitCode = process.waitFor();
            System.out.println("Python 脚本执行完毕,退出码:" + exitCode);
            //打印错误信息
            BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String errorLine;
            //打印错误信息
            while ((errorLine = errorReader.readLine()) != null) {
                System.out.println("Error: " + errorLine); // 输出来自Python脚本的错误信息
            }

        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

5、运行Java文件

在这里插入图片描述

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煤油八歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值