Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何知道javac是否在python中使用system()干净地编译_Java_Python - Fatal编程技术网

如何知道javac是否在python中使用system()干净地编译

如何知道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.

在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中的模块子进程替换

您需要使用模块,
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']
作为
命令
)。