java调用python脚本并向python脚本传递参数
1、安装Eclipse
先安装jdk,再安装Eclipse,成功后开始建立py_java项目,在这个项目的存储目录SRC下建立test包,在test包中New-Class,新建MyDemo类,建好完成后就可以在MyDemo中写代码了
2、python脚本内容
import numpy as np
from selenium import webdriver def main():
url = 'https://www.tianyancha.com/login'
driver = webdriver.Chrome()
driver.get(url)
if __name__ == '__main__':
a = np.ones(3)
print(a)
print('java 调用有第三方库的python脚本成功')
main()
调用了两个三方库,有输出操作和打开浏览器操作
3、MyDemo类的代码(java调用python脚本)
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MyDemo { public static void main(String[] args) {
try {
System.out.println("start");
String[] args1=new String[]{"python","D:\\pyworkpeace\\9_30_1.py"};
Process pr=Runtime.getRuntime().exec(args1); BufferedReader in = new BufferedReader(new InputStreamReader(
pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
pr.waitFor();
System.out.println("end");
} catch (Exception e) {
e.printStackTrace();
}}
public void test(){
System.out.println("我的第一个方法C");
} }
4、运行结果如下所示

不光有打印窗口,而且还弹出了天眼查的浏览器,程序完成后浏览器也就关闭了
5、java动态传递参数
这次要做的是通过java传递url给python脚本,而python脚本用浏览器打开接收到的url网页。
(1)首先定义一个url参数在java中 ;String url="http://blog.csdn.net/thorny_v/article/details/61417386";
(2)将参数传递给python; String[] args1 = new String[] { "python", "D:\\pyworkpeace\\9_30.py", url};
java中其他地方完全一样 没有改动
(3)python中需要做一点小变动,重写了一下代码
import sys
from selenium import webdriver def main(a):
driver = webdriver.Chrome() # 打开浏览器
driver.get(a) # 浏览器打开指定页面
if __name__ == '__main__':
for i in range(1, len(sys.argv)):
url = sys.argv[i]
main(url)
其中需要注意的是接收参数从sys.argv[1]开始,sys.argv[0]是python脚本的参数地址,没什么用。最后就大功告成了
//这个程序可以调用python脚本,并向python脚本中传递参数 package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class test_1 { public static void main(String[] args) {
try {
//String a=getPara("car").substring(1),b="D34567",c="LJeff34",d="iqngfao";
//String[] args1=new String[]{ "python", "D:\\pyworkpeace\\9_30_1.py", a, b, c, d };
//Process pr=Runtime.getRuntime().exec(args1);
String url="http://blog.csdn.net/thorny_v/article/details/61417386";
System.out.println("start;"+url);
String[] args1 = new String[] { "python", "D:\\pyworkpeace\\9_30.py", url};
Process pr=Runtime.getRuntime().exec(args1);
BufferedReader in = new BufferedReader(new InputStreamReader(
pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
pr.waitFor();
System.out.println("end");
}
catch (Exception e) {
e.printStackTrace();
}
}
private static String getPara(String string) {
// TODO Auto-generated method stub
return null;
} }
java调用python脚本并向python脚本传递参数的更多相关文章
- 1.3 Python基础知识 - 用户交互及传递参数
一.用户交互 用户交互方面,每种开发语言都有不同的方式,例如shell语言用的是,“read -p "What is your name ? " ”.python中是什么样子的呢 ...
- java调用ffmpeg获取视频文件信息的一些参数
一.下载ffmpeg http://www.ffmpeg.org/download.html 主要需要bin目录下的ffmpeg可执行文件 二.java代码实现 package com.aw.util ...
- java 调用Spring接口上传文件及其他参数填充
第一步:在Spring配置中添加以下内容 <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> < ...
- 如何用java发送Http的post请求,并传递参数
书写方法,请参考以下代码: package utils; import java.io.BufferedReader; import java.io.IOException; import java. ...
- Spark(四十四):使用Java调用spark-submit.sh(支持 --deploy-mode client和cluster两种方式)并获取applicationId
之前也介绍过使用yarn api来submit spark任务,通过提交接口返回applicationId的用法,具体参考<Spark2.3(四十):如何使用java通过yarn api调度sp ...
- Java调用Python脚本
今天遇到Java调用一个Python脚本的问题,纠结了大半天,遇到各种问题.网上搜索的大部分都是用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什 ...
- java 调用 python 脚本
有时候在java项目里,需要执行Python脚本以下几种方式: 1.直接执行Python脚本代码 引用 org.python包 创建一个 python解释器,貌似这种方式不可以导入第三方库,模块... ...
- (转)java调用python脚本
这篇博客旨在吐血分享今天遇到的java调用python脚本遇到的坑,折腾了3个多小时终于可以跑通了,代码超级短,但网上的好多资料都是抄来抄去的,很少有能够直接跑通的,尤其是针对你的python文件中用 ...
- java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)
java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...
随机推荐
- Python学习(四十三)—— Djago-admin管理工具
一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...
- Django----初识视图与模板
1.使用Bootstrap(一个优秀的前端框架,是基于html,css基础上进行开发,快速,便捷,提供非常多的空间并且都是附带源码)实现静态博客页面 bootstrap中文官网:www.bootcss ...
- 怎么给easyui中的datagrid加水平滚动条
注意如下几个点就行: 1.数据网格(DataGrid)所在的table属性上级div无需设置width: 2..datagrid属性:fitColumns为false 或者不填 3.在style中给. ...
- 在VUE-CLI 3下的第一个Element-ui项目(菜鸟专用)
vue-cli3.0使用及配置 (https://www.cnblogs.com/xzqyun/p/10779891.html ) 以上是 vue-cli3.0使用及配置 这里我们来引用基于v ...
- centos docker-ce安装
懂得自然懂 https://yeasy.gitbooks.io/docker_practice/content/install/centos.html
- Shell脚本学习 - 运算符
继续shell脚本学习.上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作. 运算符 bash不支持简单的数学计算,需要依赖其他命令实现. expr可以代为实现. # 表达式一般这么写 ` + ...
- POJ3436 Command Network [最小树形图]
POJ3436 Command Network 最小树形图裸题 傻逼poj回我青春 wa wa wa 的原因竟然是需要%.2f而不是.2lf 我还有英语作业音乐作业写不完了啊啊啊啊啊啊啊啊啊 #inc ...
- 1095 A+B for Input-Output Practice (VII)
一直presentation不对 ,看了别人的解释,还是不知道为什么最后还要\n http://acm.hdu.edu.cn/showproblem.php?pid=1095 #include< ...
- Do-Now—团队 冲刺博客六
Do-Now-团队 冲刺博客六 作者:仇夏 前言 终于从四级的考试中解脱了(不过我觉得可能凉凉,呵呵),我们的APP制作也迎来了最后的两天. 自己觉得自己其实没有干成什么事情,代码什么的大都是队友们写 ...
- modbus tcp数据报文结构
modbus tcp数据报文结构 请求:00 00 00 00 00 06 09 03 00 00 00 01 响应:00 00 00 00 00 05 09 03 02 12 34 一次modbus ...