从java执行python
我知道有很多类似的问题,但都没有解决我的问题 所以,我想使用ProcessBuilder从java执行python脚本 以下是我编写的一个方法,但它不起作用:从java执行python,java,python,cmd,Java,Python,Cmd,我知道有很多类似的问题,但都没有解决我的问题 所以,我想使用ProcessBuilder从java执行python脚本 以下是我编写的一个方法,但它不起作用: public void stemPosts(String scriptPath, String inputFile, String outputFile) throws IOException { ProcessBuilder process = new ProcessBuilder("python", scrip
public void stemPosts(String scriptPath, String inputFile, String outputFile)
throws IOException {
ProcessBuilder process = new ProcessBuilder("python", scriptPath,
inputFile, outputFile);
process.start();
}
下面是方法调用(
仅用于隐藏个人信息):
dataManager.stemPosts(
“D://stemmer/Croatian_stemmer.py”,
“D://stemmer/posts.txt”,
“D://stemmer/stemmedPosts.txt”);
第一个参数是脚本,第二个参数是第一个脚本参数(inputFile),第三个参数是第二个脚本参数(outputFile)
cmd中的执行很简单:python cratian_stemmer.py posts.txt stemmedPosts.txt
,这很有效
上面的代码只创建输出文件,但它不填充数据
我尝试更改文件分隔符,但没有任何帮助…对于初学者,我将通过重定向ProcessBuilder输出(如下所述),查看脚本执行过程中看到的输出
我的直觉是,这可能与PYTHONPATH有关,或者脚本中有错误,但是如果看不到脚本或执行的输出,就不可能知道。因此,我按照您的建议重定向了它,但没有打印出来;接下来,正确设置python路径;这里是原始形式的脚本:我想我看到了-您的python脚本假设“rules.txt”和“transformations.txt”在当前工作目录中。如果您从终端运行脚本,而不是从词干分析器目录运行脚本,您可能会看到相同的问题。当JVM运行脚本时,它的工作目录不会在词干分析器中。让您的python脚本计算出自己的绝对路径,并在此基础上引用rules.txt和transformations.txt-请参阅另一个说明您也可以使用sys.argv[0]谢谢您注意到当前的工作目录问题。。。这是我错过的东西…因为我对python不是很在行(这不是我的脚本),所以我通过将
ProcessBuilder#目录设置为工作目录来解决Java中的问题,现在一切都正常了:)谢谢你的帮助:)酷!很乐意帮忙。请随意核对/投票支持我的答案。:)
dataManager.stemPosts(
"D:/<user_path>/stemmer/Croatian_stemmer.py",
"D:/<user_path>/stemmer/posts.txt",
"D:/<user_path>/stemmer/stemmedPosts.txt");