Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Python 如何在sys.exit()命令后继续执行_Python - Fatal编程技术网

Python 如何在sys.exit()命令后继续执行

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

在这里,我使用'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.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()
的源代码为。。。这是一个非常简单的只做一件事的脚本,需要捕捉它是程序结构不好的标志。