java调用python函数runtime_使用runtime.getruntime.exec从Java调用python脚本(Calling python script from Java using...

使用runtime.getruntime.exec从Java调用python脚本(Calling python script from Java using runtime.getruntime.exec)

我有一个java web开发项目,想要调用python脚本在后台运行然后继续使用java。

String command = "cmd.exe /c cd "C:\\path\\to\\py\\" && python script.py";

Process p = Runtime.getRuntime().exec(command);

当我调用它时似乎没有发生任何事情,但我需要首先更改目录,因为脚本访问其目录中的文件。

谢谢你的帮助

编辑:

正确的答案是添加开始,这是我编辑的代码

String command = "cmd.exe /c cd "C:\\path\\to\\py\\" && start python script.py";

Process p = Runtime.getRuntime().exec(command);

I have a java web development project, and want to call a python script to run in the background and then carry on with the java.

String command = "cmd.exe /c cd "C:\\path\\to\\py\\" && python script.py";

Process p = Runtime.getRuntime().exec(command);

Nothing seems to happen when i call this, but i need to change directory first as the script accesses files in its directory.

Thanks for your help

Edit:

Correct answer was adding start, this is my edited code

String command = "cmd.exe /c cd "C:\\path\\to\\py\\" && start python script.py";

Process p = Runtime.getRuntime().exec(command);

原文:https://stackoverflow.com/questions/13861024

2020-02-13 19:02

满意答案

您是否将环境配置为支持“可执行”python脚本?

如果没有,你应该这样称呼它:

String command = "cmd.exe /c start python path\to\script\script.py";

Process p = Runtime.getRuntime().exec(command);

start命令使用其提供的参数(在本例中为脚本本身)运行相应的可执行文件(在本例中为python解释器)。

Did you configure your environment to support "executable" python scripts?

If not, you should call it like this:

String command = "cmd.exe /c start python path\to\script\script.py";

Process p = Runtime.getRuntime().exec(command);

The start command runs the appropriate executable (in this case python interpreter), with its supplied arguments (in this case the script itself).

2012-12-13

相关问答

解 您应该尝试在不同的线程上执行读取和执行。 更好的选择是使用ProcessBuilder ,它负责处理“脏”的工作。 try块中的代码可能如下所示: /* Create the ProcessBuilder */

ProcessBuilder pb = new ProcessBuilder(commandArr);

pb.redirectErrorStream(true);

/* Start the process */

Process proc = pb.start();

System.ou...

丢失了一条线,我做了一点调整,纠正了错误。 public static String listFilesString(String dirLocation){

String allPaths = ""; //pretty self explanatory returns full list of files in directory with spaces

File f = new File(dirLocation);

if(f.isDirectory()&&f.list(...

您不会直接获得每个脚本的输出。 您需要使用以下代码捕获它: BufferedReader stdInput = new BufferedReader(new

InputStreamReader(p.getInputStream()));

// read the output from the command

System.out.println("EXE OUTPUT");

while ((s = stdInput.readLine()) != null) {

System...

从Cygwin和Java执行时,执行perl代码的文件夹似乎不一样。 所以perl脚本找不到你的文件。 您应该在perl代码中添加错误检查,并验证当前工作的dir目录。 我会写: #!/usr/bin/env perl

use warnings;

use Cwd;

my $cwd = cwd();

print "dada\n";

print "In folder: $cwd";

$file = "settings.txt";

open ($ds, "

如果您在通过以下方式撰写问题时尝试获取运行时对象: - Runtime.getruntime.exec(String cmd)所以它不是getruntime它在CamelCase中的getRuntime。 您可以像这样使用Runtime: - Runtime runtime = Runtime.getRuntime()

Process croppingProcess = runtime.exec(runtimeCommand)

int processOutput = cro...

使用Runtime.getRuntime().exec时,应该显式关闭输入/输出流。 Process p = null;

try {

p = Runtime.getRuntime().exec("ls -l");

//process output here

p.waitFor();

} finally {

if (p != null) {

p.getOutputStream().close();

p.getInputStream()....

如果你到达else语句,那么进程已经超过了超时,所以在你将新进程分配给proc你必须先终止前一个进程。 在proc = Runtime.getRuntime().exec(command2);之前, proc.destroy()和proc.destroyForcibly()有两种方法可以添加任何in语句Runtime.getRuntime().exec(command2); 它应该没问题。 In your if if you reach the else statement the process...

python可执行文件很可能不在为子进程提供的路径中。 尝试更改命令行以包含python可执行文件的完整路径,如in Process p = r.exec("cmd /c c:\\path\\to\\python python\\test.py");

Most likely the python executable is not in the path that's given to the child process. Try changing the command line to inc...

您是否将环境配置为支持“可执行”python脚本? 如果没有,你应该这样称呼它: String command = "cmd.exe /c start python path\to\script\script.py";

Process p = Runtime.getRuntime().exec(command);

start命令使用其提供的参数(在本例中为脚本本身)运行相应的可执行文件(在本例中为python解释器)。 Did you configure your environment to ...

相关文章

需求功能:JAVA调用shell导入大量数据,优化数据库(informix),创建索引,整个执行脚本时

...

Python 编程语言具有很高的灵活性,它支持多种编程方法,包括过程化的、面向对象的和函数式的。但最重

...

python2和python3的区别,1.性能 Py3.0运行 pystone benchmark的速

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值