博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java调用python脚本以及会出现的问题
阅读量:7014 次
发布时间:2019-06-28

本文共 1216 字,大约阅读时间需要 4 分钟。

hot3.png

1、最佳方式:

proc = Runtime.getRuntime().exec("python  e://xupython//icmp.py 3a05677b9d12429c8048d58f0d1fd843 10.10.136.41 salt 60.211.210.78 1")

这种调用方式个人觉得最佳,

原因:你可能会选择用jython,但是这种我试过,会报错,而且不同版本还有bug,很不成熟,算了,还是相信java本身吧。

缺陷:这里的缺陷可能是python本身的语言造成的,python对格式的要求很高,当你在windows上去运行python的时候(尤其是代码量比较多的时候),难免会出现语法错误,我就被这个问题困扰了好一会,错误如下:

IndentationError: unindent does not match any outer indentation level

意思就是语法错误,说白了就是制表符与空格搞混了所致。

解决:解决以上问题的办法就是用代码调试,看哪一行出错了,记住行数,然后你会发现那一行没有问题,但是当你用Notepad++打开的时候会发现那里其实是四个点(即空格),而不是制表符,千万不要去删除四个点,然后再按一下制表符Tab,因为你会发现按了Tab之后仍然是四个点,继续报错。小窍门:通过复制一个制表符粘贴覆盖原来的四个点即可。

2、调用方式2:

proc = new ProcessBuilder("python  e://xupython//icmp.py 3a05677b9d12429c8048d58f0d1fd8            43 10.10.136.41 salt 60.211.210.78 1").start();BufferedReader in = new BufferedReader(new                      InputStreamReader(proc.getInputStream()));  String line;  System.out.println(in.readLine());while ((line = in.readLine()) != null) {      System.out.println(line);  }  in.close();  proc.waitFor();  System.out.println("end");
但是上面
ProcessBuilder的方式调用会报错:

错误的意思是:检测不到python环境,需要再eclipse中配置环境,个人觉得这样很傻叉,即使在eclipse里面把环境搭建好了,把这代码传到服务器上跑咋办?

建议:使用第一种调用方式,第二种没有找到原因。

转载于:https://my.oschina.net/weiweiblog/blog/476488

你可能感兴趣的文章
Win10 64bit GTX950 Anaconda3 环境下安装配置TensorFlow
查看>>
【EASYDOM系列教程】之复制节点
查看>>
React 服务端渲染如此轻松 从零开始构建前后端应用
查看>>
gradle 打包不同资源
查看>>
react-native创建android原生模块
查看>>
分享一个基于Node的名片设计网站
查看>>
Express + Ejs实现一个简单的WebServer
查看>>
40 行代码内实现一个 React.js
查看>>
关于5G被激烈讨论的那些争端和冲突
查看>>
AlphaZero进化论:从零开始,制霸所有棋类游戏
查看>>
.NET仓储模式高级用例
查看>>
如何理解 Laravel 的 Ioc 容器
查看>>
代码艺术家之JS
查看>>
Microsoft Azure Site Recovery (2) 配置虚拟机保护
查看>>
具有邮件功能的用户和联系人有什么区别?-Exchange2003系列之八
查看>>
ORACLE学习笔记--性能优化4
查看>>
毕啸南专栏 | 对话李开复:AI科学家的转型之路
查看>>
iphone: 可编辑的tableView Move&Delete
查看>>
linux shell “(())” 双括号运算符使用
查看>>
Asp.net Ajax Accordion控件的用法
查看>>