使用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的速
...