Java运行时传递包含空格的自变量的问题



我有一个python程序,我从命令行获取参数,下面的python脚本将使用JAVA代码运行,运行时

从Ubuntu终端:

python3 testingArg.py "My String With Spaces"

Import sys
print(sys.argv[1])

这是打印的My String With Spaces

Java代码:

Process p = Runtime.getRuntime().exec("python3 testingArg.py "+""My String With Spaces"");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((s = in.readLine())!=null) {
System.out.println(s);
}

打印为"My",字符串的其余部分将被截断。

使用默认的标记器将命令字符串标记为参数,该标记器仅在空白处拆分-不考虑引号。

在我看来,你最好自己做标记化(这很琐碎,因为你知道你有一个参数,所以不需要代码(,并使用exec的数组形式。

String args[] = { "python3",  "testingArg.py" , "My String With Spaces" };
Runtime.getRuntime().exec(args);

";命令串";您当前使用的表单本质上是将字符串标记为一个数组,但它使用了一种您不满意的算法,所以跳过它,自己制作合适的数组。

最新更新