如何用Python中的system()检查javac是否成功编译

3 投票
2 回答
1338 浏览
提问于 2025-04-16 14:57

在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 模块中的哪个函数。

撰写回答