为了从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的方法。
如果有人可以给我一些提示以解决我的问题,我将不胜感激。
我已经进行了搜索,但是找不到适合我需要的答案,如果有人找到正确的链接,请告诉我。
最好!
只需将它们作为数组中的单独字符串提供,而不是将最后两个组合成"val_31 val_32"
:
String[] command = {"script.py", "run",
"-arg1", "val1",
"-arg2", "val2" ,
"-arg3" , "val_31", "val_32",
};
否则它将逃脱之间的空间val_31
,val_32
因为您告诉它它们是单个参数。顺便说一句,如果需要,也可以使用varargs
构造函数,而不必创建数组:
ProcessBuilder probuilder = new ProcessBuilder( "script.py", "run",
"-arg1", "val1",
"-arg2", "val2" ,
"-arg3" , "val_31", "val_32");
I使用Processbuilder如下所示: 在方法中,我设置要执行的linux命令,如下所示: 我可以从终端执行相同的命令。
我试图使用Java的类来执行包含管道的命令。例如: 然而,我得到了一个错误: 然后: 尽管该命令在命令行中运行得很好,但我无法让执行将其输出重定向到另一个的命令。 有没有办法做到这一点?
堆栈跟踪: cat://opt/mapr/zookeeper/zookeeeperversion:没有这样的文件或目录16/10/25 07:41:12信息Sqoop.Sqoop:运行Sqoop版本:1.4.6-mapr-1609 16/10/25 07:41:12警告工具。basesqooptool:在命令行设置密码不安全。考虑改用-p。16/10/25 07:41:13错误tool.bases
问题内容: 我经常被要求调试别人编写的Python脚本。我想将这些脚本发送到IPython,这样它将在脚本失败时落入IPython Shell中。 不幸的是,我找不到发送脚本所需的命令行选项的方法。 当我通过以下方式传递脚本及其选项时,IPython假定其中的所有内容均适用于IPython: 有解决方案或解决方法吗? 问题答案:
问题内容: 当我使用执行命令时,它如何知道在哪里寻找该命令?使用此技巧,我将PATH变量(通过检查进行了验证)修改为错误(空,工作目录等),但ProcessBuilder仍然可以执行sort,echo,bash等。它是怎么做到的? 注意:我特定的开发环境是OSX,但是此代码也将在Red Hat Enterprise Linux上运行。 问题答案: 该文件说 一个命令,一个字符串列表,表示要调用的外
问题内容: 我正在测试短ping测试程序。如果我将简单的ping命令设置功能,它将按设计工作。但是,如果我添加另外平的选择,我有 ping:未知主机源 回信。如果我从x终端手动执行两个命令,则两个命令都能正常工作。 我需要使程序从不同的源接口IP执行ping操作。使用JSch的两个命令有什么区别setCommand? (加工) (不工作) 码: 问题答案: 您的语法对我来说似乎很奇怪。但我相信您,