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. 1.3 Python基础知识 - 用户交互及传递参数

    一.用户交互 用户交互方面,每种开发语言都有不同的方式,例如shell语言用的是,“read -p "What is  your name ? " ”.python中是什么样子的呢 ...

  2. java调用ffmpeg获取视频文件信息的一些参数

    一.下载ffmpeg http://www.ffmpeg.org/download.html 主要需要bin目录下的ffmpeg可执行文件 二.java代码实现 package com.aw.util ...

  3. java 调用Spring接口上传文件及其他参数填充

    第一步:在Spring配置中添加以下内容 <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> < ...

  4. 如何用java发送Http的post请求,并传递参数

    书写方法,请参考以下代码: package utils; import java.io.BufferedReader; import java.io.IOException; import java. ...

  5. Spark(四十四):使用Java调用spark-submit.sh(支持 --deploy-mode client和cluster两种方式)并获取applicationId

    之前也介绍过使用yarn api来submit spark任务,通过提交接口返回applicationId的用法,具体参考<Spark2.3(四十):如何使用java通过yarn api调度sp ...

  6. Java调用Python脚本

    今天遇到Java调用一个Python脚本的问题,纠结了大半天,遇到各种问题.网上搜索的大部分都是用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什 ...

  7. java 调用 python 脚本

    有时候在java项目里,需要执行Python脚本以下几种方式: 1.直接执行Python脚本代码 引用 org.python包 创建一个 python解释器,貌似这种方式不可以导入第三方库,模块... ...

  8. (转)java调用python脚本

    这篇博客旨在吐血分享今天遇到的java调用python脚本遇到的坑,折腾了3个多小时终于可以跑通了,代码超级短,但网上的好多资料都是抄来抄去的,很少有能够直接跑通的,尤其是针对你的python文件中用 ...

  9. java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)

    java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...

随机推荐

  1. mysql 和 sqlserver sql差异比较

    mysql:select * from table_name limit 100,200;--取出从100到200的数据 获取时间:mysql:now() mysql tinyint(0,1) → b ...

  2. Taro音频createVideoContext组件无法调用方法

    用createVideoContext的时候,是在一个组件中 声明后这个实例的方法全部都不能使用了 Taro.createVideoContext('myVideo', this) 需要加上第二个参数 ...

  3. java.util.ConcurrentModificationException 记一次坑

    集合在单线程,一个循环内,有添加又删除会出现此异常. 多线程时,在不同的循环操作同一个集合,会出现此异常. 因为,集合长度发生改变时,在迭代器未结束前,迭代器的大小不会发生变化. 1.保证在同一个进程 ...

  4. sklearn库 线性回归库 LinearRegression

    import numpy as np import sklearn.datasets #加载原数据 from sklearn.model_selection import train_test_spl ...

  5. C语言的整型溢出问题 int、long、long long取值范围 最大最小值

    类型名称 字节数 取值范围 signed char 1 -128-+127 short int 2 -32768-+32767 int 4 -2147483648-+2147483647 long i ...

  6. 2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥?

    2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥? 转 https://www.ithome.com/html/android/372234.htm   据泰尔终端实验室公众微信 ...

  7. hashMap 方法详解

    http://www.iteye.com/topic/754887 /** * 扩展散列表的容量 * @param newCapacity */ void resize(int newCapacity ...

  8. 本地的jar包添加到maven库中 jdbc举例

    1.配置(检查)Java环境变量 2.配置(检查)maven环境变量 3.找到maven文件的根目录下的config目录,修改setting.xml文件 配置maven本地仓库 <!-- loc ...

  9. 获取JSON格式的树形

    需求:前端需要一个JSON格式的Tree,例如组织机构维护的时候使用到的,需要一次性返回给前端.所以编写了一个算是半通用的查询方法 1.数据库Dao层: /** * 根据父ID获取子数据 * @par ...

  10. web开发中如何使用引用字体

    1.在style中添加代码: @font-face { font-family: mFont; src: url('../font/crapaud_petit.ttf'); } 2.使用 <h1 ...