python的打印导致ProcessBuilder Java中的错误

时间:2016-11-28 03:25:28

标签: java python python-2.7 python-3.x processbuilder

我试图在Java中使用ProcessBuilder来运行一些python代码。 print导致错误,但print()正常。

java代码是:

List<String> list = Arrays.asList("python", "C:/.../test.py");
ProcessBuilder pb = new ProcessBuilder(list);
Process process = pb.start();

如果test.py是这个

,它会生成一个文件
open('C:/.../outputtest2.txt', 'a')
print(5)

但如果test.py是这个

,它就不起作用
open('C:/.../outputtest2.txt', 'a')
print 5

如果我从命令行运行脚本,两者都可以正常工作。我已尝试更改甚至从PATH中删除Python 3但仍然收到错误。我无法在网上找到任何类似的错误。

1 个答案:

答案 0 :(得分:0)

这是python语法错误。如您所知,在python 3中必须为打印功能加上括号。由于某些原因(例如系统缓存),您的ProcessBuilder使用python 3运行您的python代码。 应该通过重新启动计算机来解决此问题,但是如果它不起作用,则可以使用python 2.x手动运行它。 例如:

List<String> list = Arrays.asList("C:/python27/python.exe", "C:/.../test.py");
ProcessBuilder pb = new ProcessBuilder(list);