如何用Python中的system()检查javac是否成功编译
在Python中,我怎么知道某个system()调用是否成功呢?我正在写的程序需要确认一个Java程序是否通过javac正确编译,而这个javac是通过system()在我的Python程序中调用的。所以我需要知道javac有没有抛出异常,Java程序有没有语法错误,或者在编译时有没有其他问题。简单来说,程序会先让用户输入一个目录,然后输入Java程序的名称,再问这个程序是否需要参数,最后用system('javac ' + str(javaFile) + '.java')来编译它。
2 个回答
0
在Unix系统中,os.system会返回你启动的进程的退出状态。这在Windows系统上就不一样了。
os.system这个功能是为了被Python 2.4中的subprocess模块替代的。
http://docs.python.org/library/subprocess.html#module-subprocess
4
你需要使用 subprocess 模块,因为 os.system
已经不推荐使用了。
当程序正常结束时,它会返回一个 0
的退出代码;如果返回的是非零的代码,那就说明出错了。
这个模块里有很多方便的函数,我们来看看 subprocess.call
的例子。
>>> subprocess.call(['ls', '-a'])
0
执行成功,因为 ls
被正确地调用了。
现在我们来试试:
>>> subprocess.call(['ls', '-T']) # option -T requires an argument
2
参数不正确,返回了 2
。
如果 javac
编译成功,它应该返回 0
。否则,就会抛出错误。这取决于你调用了 subprocess
模块中的哪个函数。