首页 > 编程知识 正文

退出anaconda环境,vscode运行后终端里面没有运行结果

时间:2023-05-05 17:47:10 阅读:109967 作者:3776

使用Python运行Ant构建时出现的问题:

使用os.system () )调用Ant内部版本时,无论内部版本成功还是失败(BUILD SUCCESSFUL/BUILD FAILED ),命令行始终正常结束。

要解决问题:

可能的第一种方法是获取ant命令的返回值,并根据返回值确定命令行的退出状态。 不是0或0,0表示正常结束。

查阅相关资料时,python调用系统命令的函数为os.system、os.popen、commands.getstatusoutput/get status/get output、subprocessses

os.system ()无法获取返回值和输出

os.popen () )返回file read的对象(这是read ) )操作后可以看到执行的输出。

commands.getstatusoutput ()返回系统命令的结束状态和输出

commands.getstatus ()返回系统命令的结束状态

commands.getoutput ) )使用返回系统命令输出的commands相关函数运行Ant命令行时:

不执行构建而直接退出(退出状态为(1),输出为(不是内部或外部命令,也不是可执行程序或批处理文件) )。

结论:可能是因为Ant命令不是系统命令。 在那里寻找资料,就知道了subprocess的相关函数,如subprocess.call、subprocess.check_call、subprocess.check_output等

subprocess.call(*popenargs,**kwargs )执行命令,等待命令结束,然后返回子进程的返回值

subprocess.check _ call * popen args,**kwargs执行上述call命令并检查返回值。 如果子程序返回非零,则会抛出CalledProcessError异常。 此异常具有returncode属性并被记录

subprocess.check_output ()运行程序并返回使用subprocess.call命令运行Ant命令行时的标准输出。

无论构建成功还是失败,命令行始终正常结束。 返回值为0

结论:命令行退出状态,即返回值指示Ant构建是否成功执行的状态,而与Ant构建状态无关。 命令行的退出状态(即返回值)与Ant内部版本状态无关,因此只能分析命令行的输出结果,并根据内部版本的成功或失败来确定命令行的退出状态。 然后,使用os.popen ()命令获取输出结果并分析返回状态值。

具体的Python脚本DEMO如下。

#! Python.exe

# python version 2.7.8

#-* -编码: utf-8-* -

'调用Ant执行构建并返回构建结果'

__author__='donhui '

import os

build _ successful=' build successful '

BUILD_FAILED='BUILD FAILED '

调用Ant执行构建,并返回构建结果

#

defbuild(ant_target,build_file ) :

ant _ cmd=' ant-f {0} {1} 21 '.format (build _ file,ant_target ) ) )。

logging.info(ant_cmd )。

状态=1

forlineinOS.popen(ant_cmd ) :

打印链接,

if BUILD_SUCCESSFUL in line:

状态=0

返回状态

if __name__=='__main__':

调用Ant执行构建

build_file=os.getcwd (() )/build.xml ) )。

ant_targets='init '

if 0!=build(ant_targets,build_file ) :

exit(1)。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。