如何知道javac是否在python中使用system()干净地编译
在python中,如何判断某个system()调用是否成功?在我正在编写的程序中,我需要知道一个java程序是否使用javac正确编译,javac在python程序中被称为using system()。所以我需要知道javac是否抛出了任何异常,java程序是否有语法问题,java程序编译时是否有任何问题。本质上,程序向用户请求一个目录,然后请求java程序名,然后询问它是否接受任何参数,然后用system('javac'+str(javaFile)+'.java')编译它。在Unix上,os.system返回已启动进程的退出状态。它在Windows上的工作方式不同 os.system将由Python 2.4中的模块子进程替换 您需要使用模块,如何知道javac是否在python中使用system()干净地编译,java,python,Java,Python,在python中,如何判断某个system()调用是否成功?在我正在编写的程序中,我需要知道一个java程序是否使用javac正确编译,javac在python程序中被称为using system()。所以我需要知道javac是否抛出了任何异常,java程序是否有语法问题,java程序编译时是否有任何问题。本质上,程序向用户请求一个目录,然后请求java程序名,然后询问它是否接受任何参数,然后用system('javac'+str(javaFile)+'.java')编译它。在Unix上,os.
os.system
已被弃用
退出代码0
表示成功终止,非零退出代码表示发生错误
有许多方便的函数可用,让我们以subprocess.call为例
>>> subprocess.call(['ls', '-a'])
0
成功,因为使用正确的参数调用了ls
现在让我们试试:
>>> subprocess.call(['ls', '-T']) # option -T requires an argument
2
参数无效,返回2
如果javac
编译成功,它应该返回0
。否则,将抛出一个错误。这取决于调用子流程
模块的哪个函数。这是一种非常幼稚的方法。使用子流程
,因为它将为您提供任何输出和退出代码,并且如果使用得当,也不会中断文件名,例如带有空格的文件名(例如,使用列表['javac','--some opt',javafile+'.java']
作为命令
)。