- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章java 直接调用python脚本,并传递参数代码实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
最近陆续用python写了很多文件处理脚本,虽然功能都比较简单 ,但还是感觉到python对文件处理的简洁高效 ,越发觉得java的语法相当的繁琐~ 。
接到个需求处理ftp数据接口 。所以想把python脚本也用上。java代码定时扫描ftp数据仓库 ,调用python脚本入库.
直接采用java执行系统命令的方式 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
@async
public
void
readfilebypython(list<string> filepaths)
throws
filenotfoundexception {
url localsrcurl = abstractreadfileline.
class
.getresource(
""
);
string localsrcpath = localsrcurl.getpath();
localsrcpath = localsrcpath.substring(
1
, localsrcpath.length());
string pythonfile = localsrcpath +
"pythonfilehandle.py"
;
int
size = filepaths.size() +
2
;
string[] args =
new
string[size];
args[
0
] =
"python"
;
args[
1
] = pythonfile;
for
(
int
i =
0
;i<filepaths.size() ;i++){
int
index = i+
2
;
args[index] = filepaths.get(i);
}
try
{
system.out.println(
"start"
);
process proc = runtime.getruntime().exec(args);
inputstream is = proc.geterrorstream();
inputstreamreader isr =
new
inputstreamreader(is);
bufferedreader br =
new
bufferedreader(isr);
string line =
null
;
system.out.println(
"<error>"
);
while
((line = br.readline())!=
null
){
system.out.println(line);
system.out.println(
"</error>"
);
int
exitvalue = proc.waitfor();
system.out.println(
"process exitvalue="
+exitvalue);
}
system.out.println(
"end"
);
}
catch
(exception e){
e.printstacktrace();
}
}
|
string[] args = new string[size]; args[0] = "python"; args[1] = pythonfile; args[0]表示要执行的是python 脚本 ,args[1] 脚本文件的全路径 。
该方法调用 abstractreadfileline.class 文件路径下的 pythonfilehandle.py 脚本 ,并传入string数组类型的参数(需要处理的文件全路径) 。
pythonfilehandle脚本接受java传入的文件路径参数(数组),解析并入库 。
pythonfilehandle.py 代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import
pymssql,time,sys
reload(sys)
sys.setdefaultencoding(
"utf-8"
)
class
mssql:
def __init__(self,host,user,pwd,db):
self.host = host
self.user = user
self.pwd = pwd
self.db = db
def __getconnect(self):
if
not self.db:
raise(nameerror,
""
)
self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset=
"utf8"
)
cur = self.conn.cursor()
if
not cur:
raise(nameerror,
""
)
else
:
return
cur
def execquery(self,sql):
cur = self.__getconnect()
cur.execute(sql)
reslist = cur.fetchall()
#
self.conn.close()
return
reslist
def execnonquery(self,sql):
cur = self.__getconnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
def inserttocloselist(data ,ms):
sql =
"insert into t_isee_closelist_infos (work_order_id,crm_cdsc_id,appraise_type,crm_accept_date,latn_code,theme_row_id,task_execute_row_id,crm_accept_reason,asset_integ_id) values ( '"
temp =
"' , '"
sqlstr = temp.join(data)
sql = sql + sqlstr +
"')"
ms.execnonquery(sql)
ms = mssql(host=
"172.30.0.186"
,user=
"sa"
,pwd=
""
,db=
"test"
)
fengefu =
'$%$'
for
i in range(
1
, len(sys.argv)):
read = open(sys.argv[i] ,
'r'
)
for
line in read:
line=line.strip(
'\n'
)
data = line.split(fengefu)
inserttocloselist(data,ms)
read.close
|
sys.argv[0] 存储的是py文件自身的路径,故接受参数从sys.argv[1]开始.
以上所述是小编给大家介绍的java调用python脚本传递参数详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
最后此篇关于java 直接调用python脚本,并传递参数代码实例的文章就讲到这里了,如果你想了解更多关于java 直接调用python脚本,并传递参数代码实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
为了让我的代码几乎完全用 Jquery 编写,我想用 Jquery 重写 AJAX 调用。 这是从网页到 Tomcat servlet 的调用。 我目前情况的类似代码: var http = new
我想使用 JNI 从 Java 调用 C 函数。在 C 函数中,我想创建一个 JVM 并调用一些 Java 对象。当我尝试创建 JVM 时,JNI_CreateJavaVM 返回 -1。 所以,我想知
环顾四周,我发现从 HTML 调用 Javascript 函数的最佳方法是将函数本身放在 HTML 中,而不是外部 Javascript 文件。所以我一直在网上四处寻找,找到了一些简短的教程,我可以根
我有这个组件: import {Component} from 'angular2/core'; import {UserServices} from '../services/UserService
我正在尝试用 C 实现一个简单的 OpenSSL 客户端/服务器模型,并且对 BIO_* 调用的使用感到好奇,与原始 SSL_* 调用相比,它允许一些不错的功能。 我对此比较陌生,所以我可能会完全错误
我正在处理有关异步调用的难题: 一个 JQuery 函数在用户点击时执行,然后调用一个 php 文件来检查用户输入是否与数据库中已有的信息重叠。如果是这样,则应提示用户确认是否要继续或取消,如果他单击
我有以下类(class)。 public Task { public static Task getInstance(String taskName) { return new
嘿,我正在构建一个小游戏,我正在通过制作一个数字 vector 来创建关卡,该数字 vector 通过枚举与 1-4 种颜色相关联。问题是循环(在 Simon::loadChallenge 中)我将颜
我有一个java spring boot api(数据接收器),客户端调用它来保存一些数据。一旦我完成了数据的持久化,我想进行另一个 api 调用(应该处理持久化的数据 - 数据聚合器),它应该自行异
首先,这涉及桌面应用程序而不是 ASP .Net 应用程序。 我已经为我的项目添加了一个 Web 引用,并构建了各种数据对象,例如 PayerInfo、Address 和 CreditCard。但问题
我如何告诉 FAKE 编译 .fs文件使用 fsc ? 解释如何传递参数的奖励积分,如 -a和 -target:dll . 编辑:我应该澄清一下,我正在尝试在没有 MSBuild/xbuild/.sl
我使用下划线模板配置了一个简单的主干模型和 View 。两个单独的 API 使用完全相同的配置。 API 1 按预期工作。 要重现该问题,请注释掉 API 1 的 URL,并取消注释 API 2 的
我不确定什么是更好的做法或更现实的做法。我希望从头开始创建目录系统,但不确定最佳方法是什么。 我想我在需要显示信息时使用对象,例如 info.php?id=100。有这样的代码用于显示 Game.cl
from datetime import timedelta class A: def __abs__(self): return -self class B1(A):
我在操作此生命游戏示例代码中的数组时遇到问题。 情况: “生命游戏”是约翰·康威发明的一种细胞自动化技术。它由一个细胞网格组成,这些细胞可以根据数学规则生存/死亡/繁殖。该网格中的活细胞和死细胞通过
如果我像这样调用 read() 来读取文件: unsigned char buf[512]; memset(buf, 0, sizeof(unsigned char) * 512); int fd;
我用 C 编写了一个简单的服务器,并希望调用它的功能与调用其他 C 守护程序的功能相同(例如使用 ./ftpd start 调用它并使用 ./ftpd stop 关闭该实例)。显然我遇到的问题是我不知
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
我希望能够从 cmd 在我的 Windows 10 计算机上调用 python3。 我已重新安装 Python3.7 以确保选择“添加到路径”选项,但仍无法调用 python3 并使 CMD 启动 P
我是一名优秀的程序员,十分优秀!