使用ProcessBuilder执行带有命令行选项的python脚本

问题描述

只需将它们作为数组中的单独字符串提供,而不是将最后两个组合成"val_31 val_32"

String[] command = {"script.py", "run",
                    "-arg1", "val1", 
                    "-arg2", "val2" ,          
                    "-arg3" , "val_31", "val_32",
       };

否则它将逃脱之间的空间val_31val_32因为您告诉它它们是单个参数。顺便说一句,如果需要,也可以使用varargs构造函数,而不必创建数组:

ProcessBuilder probuilder = new ProcessBuilder( "script.py", "run",
                    "-arg1", "val1", 
                    "-arg2", "val2" ,          
                    "-arg3" , "val_31", "val_32");

解决方法

为了从Java执行python脚本(具有几个命​​令行参数),我尝试使用的是以下Java代码

String[] command = {"script.py","run","-arg1","val1","-arg2","val2","-arg3","val_31 val_32",};

ProcessBuilder probuilder = new ProcessBuilder( command );
Process process = probuilder.start();

例如,我打算执行以下命令:

./script.py run -arg1 val1 -arg2 val2 -arg3 val_31 val_32

请注意,参数arg3采用参数值列表。

我面临的问题是我没有找到将值列表传递给参数arg3的方法。

如果有人可以给我一些提示以解决我的问题,我将不胜感激。

我已经进行了搜索,但是找不到适合我需要的答案,如果有人找到正确的链接,请告诉我。

最好!

相关问答

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
JavaMail问题:无法将命令发送到SMTP主机