2014-01-12 141 views
1

我想运行一个名为例如foo的python脚本。和我有absoulute路径,让说: /用户/我/ pythonscripts/如何使用绝对路径从Java运行Python文件?

我曾尝试运行:

String cmd="/Users/me/pythonscripts/" 
String py="foo" 
Runtime.getRuntime().exec("cd "+cmd); 
Runtime.getRuntime().exec("python "+py+".py"); 

但这并运行Python文件。

+0

查看以下链接:http://norwied.wordpress.com/2012/ 03/28/call-python-script-from-java-app/ –

+0

您可能还会看到[jython](http://www.jython.org),它将在Java VM上运行python脚本 – Mark

回答

3

尝试使用更多的东西一样......

Runtime.getRuntime().exec("python "+cmd + py + ".py"); 

相反。每个exec是它自己的进程和多个exec具有彼此没有关系......

你也应该考虑使用替代ProcessBuilder,因为这提供了可配置的上一个大台阶,例如,你可以改变的执行路径背景...

ProcessBuilder pb = new ProcessBuilder("python", py + ".py"); 
pb.directory(new File(cmd)); 
pb.redirectError(); 
//... 
Process p = pb.start(); 

此外,要小心,Python有一个问题,它的输出流,这可能会阻止Java的读取它,直到它完全如果在所有完成...

有关详细信息,看看Java: is there a way to run a system command and print the output during execution?

此外,还要确保python是shell的搜索路径内,否则,你将需要指定的完整路径命令以及

+0

感谢您使用ProcessBuilder提示,超级有用!现在效果很好。 – Others

+0

它只是没有执行python文件,不知道有什么问题。尽管我提前评论了一下,但我使用流程生成器来完成这项工作。 – Others

相关问题