Python 回溯错误后,子进程Popen不会终止:

Python 回溯错误后,子进程Popen不会终止:,python,Python,在python脚本中,我向目标机器发出一个“Connect命令”。在每个脚本结束时,我发出一个“断开连接命令”。只要没有引发错误,脚本在整个子进程(连接和断开连接)中都可以正常工作 我在这里面临的问题如下面的例子所示,其中出现了键值错误,使我的进程挂起,即使我给出了一个“except”,它也不会做任何事情。我猜是因为脚本启动了一个Connect命令 它仍然紧紧抓住它。我不知道如何强制终止下面的Popen进程。请帮忙!!!。我在用蟒蛇25 try:# I am creating subproces

在python脚本中,我向目标机器发出一个“Connect命令”。在每个脚本结束时,我发出一个“断开连接命令”。只要没有引发错误,脚本在整个子进程(连接和断开连接)中都可以正常工作

我在这里面临的问题如下面的例子所示,其中出现了键值错误,使我的进程挂起,即使我给出了一个“except”,它也不会做任何事情。我猜是因为脚本启动了一个Connect命令 它仍然紧紧抓住它。我不知道如何强制终止下面的Popen进程。请帮忙!!!。我在用蟒蛇25

try:# I am creating subprocess to run my python scripts  
    retcode = subprocess.Popen(shlex.split('python '' ' + "'%s'"%      (PythonTestScript) + ' ' ), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    #is done for parallel printing to Console and a file that works just fine
    while True:  
          output = retcode.stdout.readline()
          if output == ''and retcode.poll() is not None:
             break
          if output:
             print output.strip()
             outputfile.write(output)
except OSError, e:
      print >>sys.stderr, "Execution failed:", e
      returnvalue = os.popen('TASKKILL /PID '+str(retcode.pid)+' /F')
回溯(最近一次呼叫最后一次): 文件“PythonTestScript”,第27行,在 LocalDict('Name'、'Age'、'Date')
KeyError:('Name'、'Age'、'Date')

此错误在子流程中引发,因此您的
除OSError外,e:
异常未到达,但如果输出==''且retcode.poll()不是无:应命中并中断循环。。。除非子进程本身没有在错误时终止。我想是这个孩子需要调试。谢谢你的回复。这正在起作用。我在子进程中添加了异常,它成功了。!