zl程序教程

您现在的位置是:首页 >  后端

当前栏目

pycharm编写的文件如何执行_pycharm可以写java吗

JAVAPycharm文件执行 如何 可以 编写
2023-06-13 09:11:13 时间

大家好,又见面了,我是你们的朋友全栈君。

最近在做编译原理课设,准备用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