Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java编译python代码_Java_Python - Fatal编程技术网

使用java编译python代码

使用java编译python代码,java,python,Java,Python,我正在尝试使用Java编译Python代码。Python代码打开一个csv文件并将数据保存到另一个csv文件中 import os from stat import* import csv data = [] with open('Example.csv') as f: reader = csv.reader(f, delimiter = ',') for row in reader: data.a

我正在尝试使用Java编译Python代码。Python代码打开一个csv文件并将数据保存到另一个csv文件中

    import os
    from stat import*
    import csv

    data = []
    with open('Example.csv') as f:
        reader = csv.reader(f, delimiter = ',')
        for row in reader:
            data.append(row)

    f = open("Clearprint.csv","w")
    f.truncate()
    f.close()

    with open('Clearprint.csv','w',newline='') as fp:
        a = csv.writer(fp,delimiter = ',')
        a.writerows(data)
Python代码正常工作,但当我试图通过Java编译它时,什么也没发生

    class test1{

        public static void main(String[] args) throws IOException {
            String pythonScriptPath = "C:/Masters/Python/helloPython.py";
            String[] cmd = new String[2];
            cmd[0] = "C:/Python33/python.exe";
            cmd[1] = pythonScriptPath;

            Runtime rt = Runtime.getRuntime();
            Process pr = rt.exec(cmd);

            BufferedReader bfr = new BufferedReader(new InputStreamReader(pr.getInputStream()));
            String line = "";
            while((line = bfr.readLine()) != null) {
                System.out.println(line);
            }
        }   
    }
在Python代码只有一个print命令的情况下,一切正常,因此可能与我使用csv有关。注意,我不需要从Python返回Java或发送到Python。我只想让Java启动Python代码,让Python完成其他一切


谢谢

您的术语在这里有点错误,这使问题变得混乱。您正试图通过从java调用python解释器来运行python脚本

可能python子进程抛出了一些错误(比如找不到文件),而java进程没有告诉您该错误是什么。这里的解决方案是实际捕获java中的错误,并将其打印出来:

 BufferedReader err = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
    String line = "";
    while((line = err.readLine()) != null) {
        System.err.println(line);
    }

也就是说,我同意在jython中这样做可能会更好——或者只是用java重新编写python部分——我知道,java中的IO和字符串处理是一件痛苦的事情,但没有多语言项目那么痛苦:)

“我正试图用java编译python代码”——为什么?这两种程序都很简单,为什么不坚持使用一种语言呢?或者,看看。我正在用使用Java的Anylogic编写一个模拟。我的Anylogic代码导入一个由一组作业组成的csv文件。我已经用Python编写了这些作业的操作代码,我更愿意通过Java从Anylogic运行Python代码,而不是用Java重写所有Python代码。