java调用python执行脚本,附代码

article/2025/10/29 18:40:09

最近有个功能需要java调用python脚本实现一些功能,前期需要做好的准备:配置好python环境,如下:在这里插入图片描述

以下展示的为两种,一种为生成图片,另一种为生成字符串。

package com.msdw.tms.common.utils.py;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;/*** @Description: Java调用Python脚本* @Author: Maureen.Rong* @CreateDate: 2020/10/7 13:15* @UpdateDate: 2020/10/7 13:15* @Version: 1.0*/
public class PythonUtil {public static String path = "python";//这里指的是python环境,不需要改动//此处是写的你存放python脚本的地址,根据线上本地切换地址。public static String pyPathByPhoto = "C:\\Users\\Hello\\Desktop\\python\\photo.py";//生成图片public static String historyPath = "C:\\Users\\Hello\\Desktop\\python\\getVarByHistory.py";//历史模拟法//线上测试环境/*public static String pyPathByPhoto = "/usr/local/sichuan/py/photo.py";public static String historyPath = "/usr/local/sichuan/py/getVarByHistory.py";*//*** 动态传参调用Python脚本生成图片** @param pyPath* @param path* @param params* @throws IOException*/public static String getCodeByPhoto(String pyPath, String path, String... params) throws IOException {try {String[] args = new String[2 + params.length];args[0] = pyPath;args[1] = path;for (int x = 0; x < args.length; x++) {if (x > 1) {args[x] = params[x - 2];}}//执行py文件Process proc = Runtime.getRuntime().exec(args);BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));String line = null;String url = "";while ((line = in.readLine()) != null) {url += line + ",";System.out.println("获取结果:" + line);}in.close();proc.waitFor();return url;} catch (Exception e) {e.printStackTrace();}return null;}/*** 动态传参调用Python脚本:历史模拟** @param pyPath* @param path* @param params* @throws IOException*/public static String getCodeByHis(String pyPath, String path, String... params) throws IOException {try {String[] args = new String[2 + params.length];args[0] = pyPath;args[1] = path;for (int x = 0; x < args.length; x++) {if (x > 1) {args[x] = params[x - 2];}}//执行py文件Process proc = Runtime.getRuntime().exec(args);BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));String line = null;String str = "";while ((line = in.readLine()) != null) {System.out.println(line);str += line;}in.close();proc.waitFor();return str;} catch (Exception e) {e.printStackTrace();}return null;}public static void main(String[] args) throws Exception {//I为次数,t是天数,Z是传入进来的下单数*期货合约面值,arf为置信水平,ziliao为传入列表String print1 = getCodeByHis(path, historyPath,"0.95", "90", "6.8272,6.8474,6.8647,6.8925,6.8855,6.9116,6.9180,6.9179,6.9143,6.9192,6.9215,6.9318,6.9501,6.9440,6.9363,6.9413,6.9611,6.9680,6.9535,6.9366,6.9735,6.9809");System.out.println(">>>>>>>最后结果:" + print1);}
}

如下就是调用成功~
在这里插入图片描述
以下会po出python脚本一份~

import sysimport numpy as np
import pandas as pd
import scipy.stats as st
from pandas import DataFrame# 设P0为固值
P0 = 1000# 这里用
# ziliao  = [6.8272,6.8474,6.8647,6.8925,6.8855,6.9116,6.9180,6.9179,6.9143,6.9192,6.9215,6.9318,6.9501,6.9440,6.9363,6.9413,6.9611,6.9680,6.9535,6.9366,6.9735,6.9809,]def aaa(arf,N,ziliao):# 打开表格取出里边的数据# print(ziliao)sum1 = ''for i in ziliao:sum1 += iziliao = sum1.split(",")sum = []for i in ziliao:i = float(i)sum.append(i)# print(sum)ziliao = sumziliao_return = DataFrame(ziliao)# 股票日收益stock_return = np.log(ziliao_return / ziliao_return.shift(1))# 删除缺失行stock_return = stock_return.dropna()# print(stock_return)a = stock_return.loc[:,0]# print(a)b = []for i in a * P0:b.append(i)b.sort()# print(b)b1=[]for i in b:i = "%.2f"%ib1.append(i)# print(b1)# p的中间的值为置信水平为95%情况下的收益率的波动率σ,这里默认先是0.95的p = np.percentile(a, (1, 5, 10), interpolation='midpoint')# p = np.abs(p[1])# print(p)if arf ==0.95:p = np.abs(p[1])elif arf==0.90 or arf==0.9:p = np.abs(p[0])elif arf==0.99:p = np.abs(p[2])var = b1[int(p-1)]var = np.abs(float(var))# print(var)var1 = np.sqrt(N) * float(var)return var1a2 = float(sys.argv[1])
# print(a2)
a3 = float(sys.argv[2])
# print(a3)
a1 = list(sys.argv[3])
# print(a1)# aaa(a2,a3,a1)
print(aaa(a2,a3,a1))

如下图效果展示~
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/cs08Zubg.shtml

相关文章

Selenium Java自动化测试环境搭建

IDE用的是Eclipse。 步骤1&#xff1a;因为是基于Java&#xff0c;所以首先要下载与安装JDK&#xff08;Java Development Kit&#xff09; 下载&#xff1a; 点击这里下载JDK 安装&#xff1a;按照默认安装一路点next就可以了。 验证&#xff1a;安装完成后&#xff0c;在命…

java单元测试(Junit)

相关代码下载链接&#xff1a; http://download.csdn.net/detail/stevenhu_223/4884357 在有些时候&#xff0c;我们需要对我们自己编写的代码进行单元测试&#xff08;好处是&#xff0c;减少后期维护的精力和费用&#xff09;&#xff0c;这是一些最基本的模块测试。当然&…

Java单元测试工具:JUnit4(一)——概述及简单例子

&#xff08;一&#xff09;JUnit概述及一个简单例子 看了慕课网的JUnit视频教程&#xff1a; http://www.imooc.com/learn/356&#xff0c;总结笔记。 这篇笔记记录JUnit的概述&#xff0c;以及一个快速入门的例子。 1.概述 1.1 什么是JUnit ①JUnit是用于编写可复用测试集的…

Linux下执行Python脚本

1.Linux Python环境 Linux系统一般集成Python&#xff0c;如果没有安装&#xff0c;可以手动安装&#xff0c;联网状态下可直接安装。Fedora下使用yum install&#xff0c;Ubuntu下使用apt-get install&#xff0c;前提都是root权限。安装完毕&#xff0c;可将Python加入环境变…

python pytest脚本执行工具

pytest脚本执行工具 支持获取当前路径下所有.py脚本 添加多个脚本&#xff0c;一起执行 import tkinter as tk from tkinter import filedialog import subprocess import os from datetime import datetimedef select_script():script_path filedialog.askopenfilename(fil…

linux上运行python(简单版)

linux上运行python&#xff08;简单版&#xff09; 一、前提准备1.centOS72.挂载yum源[http://t.csdn.cn/Isf0i](http://t.csdn.cn/Isf0i) 二、安装python3三、运行程序 一、前提准备 1.centOS7 2.挂载yum源http://t.csdn.cn/Isf0i 在终端进行安装python3 二、安装python3 …

linux怎么运行python脚本?

linux运行python脚本的方法&#xff1a; 1、命令行执行&#xff1a; 建立一个test.py文档&#xff0c;在其中书写python代码。之后&#xff0c;在命令行执行&#xff1a;python test.py 说明&#xff1a;其中python可以写成python的绝对路径。使用which python进行查询。 注…

java实现远程执行Linux下的shell脚本

java实现远程执行Linux下的shell脚本 背景导入Jar包第一步&#xff1a;远程连接第二步&#xff1a;开启Session第三步&#xff1a;新建测试脚本文件结果报错 背景 最近有个项目&#xff0c;需要在Linux下的服务器内写了一部分Python脚本&#xff0c;业务处理却是在Java内&…

Java运行Python脚本

前段时间遇到了在JavaWeb项目中嵌入运行Python脚本的功能的需求。想到的方案有两种&#xff0c;一种是使用Java技术&#xff08;Jython或Runtime.exec&#xff09;运行Python脚本&#xff0c;另一种是搭建一个Python工程对外提供相应http或webservice接口。两种方案我都有实现&…

Java项目分层

MVC模式 在实际的开发中有一种项目的程序组织架构方案叫做MVC模式&#xff0c;按照程序 的功能将他们分成三个层&#xff0c;如下图&#xff1a;Modle层&#xff08;模型层&#xff09;、View层&#xff08;显示层&#xff09;、Controller层&#xff08;控制层&#xff09;。…

java项目收获总结_java开发项目收获心得

1 java开发项目收获心得 it行业现在的发展如日中天,很多人都纷纷走进这个行业,而java作为跨平台的编程语言更是受欢迎。java其实相对其他语言来说的确很有优势,但是也有点缺陷,但是以后发展到什么程度,谁都不知道。那么下面小编给大家说说java开发项目收获心得,希望能对你…

java查看jar包依赖_java项目开发中如何查找到项目依赖的jar包?

不管是java普通工程,还是java web项目,甚至是android项目,依赖包的管理有2种: 1.直接依赖jar包 这种方式简单直白,项目下载后在正确的ide或者稍微做转换就可以运行起来。比如java web工程的WEB-INF/lib下 只要按这个步骤Java Build Path=>Add Libraty=>Web App Libr…

Java小白必看:开发一个编程项目的完整流程(附100套Java编程项目源码+视频)

我相信很多Java新手都会遇到这样一个问题&#xff1a;跟着教材敲代码&#xff0c;很容易&#xff1b;但是让他完整的实现一个应用项目&#xff0c;却不会&#xff1b;不知道从哪里开始&#xff0c;不知道实现一个项目的完整流程是怎样的&#xff0c;看似很简单的一个问题&#…

分享67套基于Java开发的Java毕业设计实战项目(含源码+毕业论文)【新星计划】

【新星计划】分享67套基于Java开发的Java毕业设计实战项目(含源码毕业论文) 基于Java开发的Java毕业设计实战项目 本文中的所有主题都来自互联网。如果您侵犯您的权利&#xff0c;请及时联系Blogger&#xff0c;博主将及时处理。 投诉邮箱&#xff1a;1919101926qq.com (没事…

分享一些我的学习方法

赖勇浩&#xff08;http://laiyonghao.com &#xff09; 经常听到和看到一些前辈提起搞编程这一行最大的痛苦在于知识的更新太频繁&#xff0c;如同逆水行舟&#xff0c;不进则退&#xff0c;稍一松懈&#xff0c;就跟不上潮流。的确如此&#xff0c;既然身在 IT 界&#xff0c…

规划之路:SLAM学习经验分享

针对想学SLAM的提问&#xff0c;我觉得我还是有一定的发言权。 作为一个刚入坑SLAM一年多的初学者&#xff0c;首先想说的就是这个研究方向比较广&#xff0c;大方向按搭载传感器分为激光SLAM和视觉SLAM两种&#xff0c;激光SLAM搭载激光雷达&#xff0c;视觉SLAM搭载单目、双目…

学习经验分享之十三:如何撰写论文

一、文献积累 顶刊or顶会&#xff1a; AAAI: American Association for AI National Conference CVPR: IEEE Conf on Comp Vision and Pattern Recognition IJCAI: Intl Joint Conf on AI ICCV: Intl Conf on Computer Vision ICML: Intl Conf on Machine Learning KDD: Knowl…

学习经验分享【25】记录个人的一些学习体会(更新TensorBoard)

本博文将记录和分享个人的一些学习工作体会和踩过的坑&#xff0c;希望对大家能有帮助。 一、对比实验 用yolov5l.ymal和yolov5n.ymal文件&#xff0c;然后加载yolov5s.pt后&#xff0c;训练得到的模型效果极差&#xff08;mAP差30%&#xff09;&#xff0c;重新训练后换为yol…

个人学习方法分享

hi&#xff0c;大家好&#xff0c;今天来分享一下&#xff0c;我的一些学习经验&#xff0c;希望对大家学习有帮助。 我的学习方法 学习计划 核心思想&#xff1a;把自己像产品一样打造&#xff0c;就像张一鸣经典语录&#xff1a;run company as a product 制定目标 首先学习需…

分享自己学英语的经验

其实学好英语对于一个人真的很有用&#xff0c;尤其是对工程师来说&#xff0c;各种文献资料&#xff0c;代码&#xff0c;最新的技术文章&#xff0c;太多是英文的了&#xff0c;一个典型的例子就是&#xff0c;作为一个程序员和外国客户做过培训&#xff0c;当其他同事英语没…