【问题标题】:Using ProcessBuilder to execute a python script with command line options使用 ProcessBuilder 执行带有命令行选项的 python 脚本
【发布时间】:2013-08-21 12:32:24
【问题描述】:

为了从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 的方法。

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

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

最好的!

【问题讨论】:

    标签: java python processbuilder


    【解决方案1】:

    只需将它们作为数组中的单独字符串提供,而不是将最后两个组合成"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");
    

    【讨论】:

      最近更新 更多