pycharm编写的文件如何执行_pycharm可以写java吗
最近在做编译原理课设,准备用Java写个GUI整合一下,因为自己的LL1文法使用python写的,所以需要Java来实现运行python代码,网上给出了主要三种方法,但是使用Jython的方法有局限性且不太方便,于是我将采用最简洁的方法
Runtime.getRuntime()运行
python代码,下面给出代码
Process proc;
try {
/* 注意:
这里这种方式和cmd中使用python+文件名的命令,调用python程序相同
建议先使用cmd方式确认代码能够正常运行,因为如果代码在pycharm下编写执行,
可能在cmd方式下会出现缺少包的情况
*/
proc = Runtime.getRuntime().exec(“python D:\\LL1.py”);// 执行py文件
proc.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
上面给出的是一个简单的执行python文件的方法,
exec(“python + pyFile路径”)
除此之外,还能进行传递参数等等,这里转载一下:
http://blog.csdn.net/it_xiao_bai/article/details/79074988
先写一个示例python代码:
import sys
def func(a,b):
return (a+b)
if __name__ == ‘__main__’:
a = []
for i in range(1, len(sys.argv)):
a.append((int(sys.argv[i])))
print(func(a[0],a[1]))
其中sys.argv用于获取参数url1,url2等。而sys.argv[0]代表python程序名,所以列表从1开始读取参数。
以上代码实现一个两个数做加法的程序,下面看看在java中怎么传递函数参数,代码如下:
int a = 18;
int b = 23;
try {
String[] args = new String[] { “python”, “D:\\demo2.py”, String.valueOf(a), String.valueOf(b) };
Process proc = Runtime.getRuntime().exec(args);// 执行py文件
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
proc.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
其中args是String[] { “python”,path,url1,url2 }; ,path是python程序所在的路径,url1是参数1,url2是参数2,以此类推。
最后结果为:41
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175343.html原文链接:https://javaforall.cn
相关文章
- java局域网发送文件_Java如何实现局域网文件传输代码案例分享
- java mediatype utf-8_Java MediaType.APPLICATION_JSON_UTF8屬性代碼示例
- java数组定义长度_JAVA数组的定义
- java删除文件目录及文件_Java删除文件,目录
- think in java一_Think in Java(一):Java基础「建议收藏」
- java源程序文件扩展名_JAVA源代码的扩展名为( )
- java循环语句_Java中的循环语句
- java启动器_JAVA基础:Java 启动器如何查找类
- java运行机制是什么_JAVA运行机制
- java环境_Java基础篇——环境配置
- java策略模式实战示例「建议收藏」
- db4o java,db4o Java版性能测试评估
- java中random方法取值范围_Java Random.nextInt()方法,随机产生某个范围内的整数
- java 阶乘算法_Java 实现阶乘算法
- java中map根据value找key_Java Map和Map<String, Object>类型,map通过value找key
- java 读取字符串文件_Java读取文件为字符串
- 【说站】java单例模式中的Holder是什么
- java properties native2ascii_使用native2ascii针对中文乱码,进行转码操作,用于native2ascii处理properties文件…
- JAVA读取csv文件_java读取csv文件某一列
- Java八大常用类(三) String类(重要,重点掌握)
- 【Java面试八股文宝典之基础篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day12
- Java MongoDAO 初始化详解大数据
- java中HashSet详解编程语言
- 利用Redis存储Java对象的方法(redis存储java对象)
- 持久化Java持久化技术与Redis高级应用(redis高级之java)
- Java学习Linux基础的必要性(java要学linux)
- 时间Java中如何设置Redis过期时间(redisjava过期)
- Java文件在Linux系统中的使用(java文件linux)
- 深入学习:Linux下Java环境建设与配置(linux下java环境)
- Linux 下安装Java:快速从零开始(linux 下载java)
- 管理Linux下Java版本管理:轻松实现多版本切换(linux下java版本)
- 学习Java编程,攻克Oracle难题(java学oracle)
- Redis无法与Java建立连接(redis连不上java)
- java整数(秒数)转换为时分秒格式的示例