在Windows上使用Java Runtime.exec执行Python脚本
我有一个在Windows上运行的Python脚本,它使用了win32扩展和WMI来获取一些信息。如果我通过命令行运行这个脚本,它能正常执行。但是,如果我尝试用Java的Runtime.exec("python myscript.py")来运行同样的脚本,它似乎在waitFor()这一步被卡住了。代码大致是这样的:
Process p = Runtime.getRuntime().exec("python myscript.py");
int exitCode = p.waitFor();
如果我用这段Java代码去运行一个非常简单的Python脚本,比如:
print "hello world"
我得到的exitCode是0,这意味着它运行成功。那么,我能否用Java的Runtime.exec()来执行一个导入了WMI库的Python脚本呢?
谢谢
1 个回答
3
一个可能的原因是你的输入输出缓冲区满了,需要清空一下。所以你可以在你的Java代码中尝试清空标准输出和标准错误输出(示例代码)。
另外,你也可以尝试把所有输出重定向到NUL(相当于丢弃)或者一个文本文件,可以使用exec的以下参数:
cmd.exe /c python myscript.py > NUL 2>&1
cmd.exe /c python myscript.py > output.txt 2>&1