Python 如何在sys.exit()命令后继续执行
在这里,我使用'for'循环读取并比较两个日志中的值。问题是我无法在sys.exit命令之后继续下一个TC。如果需要更多澄清,请告诉我Python 如何在sys.exit()命令后继续执行,python,Python,在这里,我使用'for'循环读取并比较两个日志中的值。问题是我无法在sys.exit命令之后继续下一个TC。如果需要更多澄清,请告诉我 f = open('/tmp/ftplog', 'r') for line in f: m = re.findall("5\d+", line) #print m fd = open('/tmp/tellog', 'r') for line in fd: n = re
f = open('/tmp/ftplog', 'r')
for line in f:
m = re.findall("5\d+", line)
#print m
fd = open('/tmp/tellog', 'r')
for line in fd:
n = re.findall(r"5\d+", line)
#print n
if m == n:
print "passed"
sys.exit()
####TC-02####
def tc02(ipadrr,login,password,ftpipaddr,ftplogin,ftppassword,ftpfilename):
try:
telconn2 = pexpect.spawn(ipadrr)
您可以使用
atexit
添加将在退出时执行的挂钩
然而,需要在一个简单的脚本中完成这项工作通常表明您的逻辑是错误的。你真的需要退出吗?你能抛出一个异常吗<代码>中断<代码>返回?例如,尝试在函数中包含逻辑,函数完成时返回ing,以及一些调用该函数并对返回结果执行操作的代码。sys.exit
实际上抛出了一个SystemExit
异常,您可以捕获到,但确实不应该捕获。重新调整您的程序,这样您就不必这样做。试试这个
print "passed"
return ####instead of sys.exit use return
如果确实需要,执行此操作的一种方法是,在退出子流程之前,在子流程中使用不同的参数调用相同的脚本,如下所示:
import subprocess
p = subprocess.Popen("exec your_script.py -parameters parameter", stdout=subprocess.PIPE, shell=True)
p.kill()
然后,您可以为您将提供的特定参数添加一些检查,并仅执行代码的这一部分(例如,您需要的tc02()
函数)
请记住,一旦您将脚本作为子进程调用,您将无法使用Ctr+C从控制台停止它,因为这将杀死父进程,而不是子进程。为了消除所有需要调用的方法,请执行以下操作:
import subprocess
p = subprocess.Popen("exec your_script.py -parameters parameter", stdout=subprocess.PIPE, shell=True)
p.kill()
简短回答:您不能sys.exit()
应该在其上方缩进print
行(作为if
的一部分)。在python中,缩进非常重要,从嵌套循环中返回。@RedBaron我已经用你说的方法尝试过了,但对我没有帮助。你真正想要实现的是什么?为什么首先要使用sys.exit()?为什么不捕获它?某些库(argparse
浮现在脑海中)抛出它,而您并不总是想重写库。@当system.exit()
的源代码为。。。这是一个非常简单的只做一件事的脚本,需要捕捉它是程序结构不好的标志。