如何在Python中打破我的外部循环?

 手机用户2502909227 发布于 2023-02-07 15:57

我正在开发一个项目,我需要使用Python执行shell脚本.到目前为止一切都很好看.

下面是我的Python脚本,它将执行一个简单的hello world shell脚本.

MAX_TRIES = 2

jsonStr = '{"script":"#!/bin/bash \\n echoo Hello world 1 "}'
j = json.loads(jsonStr)
shell_script = j['script']

steps = ['step1', 'step2', 'step3']

for step in steps:
    print "start"
    print step
    for i in xrange(MAX_TRIES):
        proc = subprocess.Popen(shell_script, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        (stdout, stderr) = proc.communicate()
        if stderr:
           print "Shell script gave some error..."
           sleep(0.05) # delay for 50 ms
        else:
           print "end" # Shell script ran fine.
           break

在我上面的脚本中,如果上面的shell脚本由于某种原因而失败并且工作正常,我会重试两次.

现在我的问题是,在上面的脚本中,我有一个错误的shell脚本,它将失败.我有一个for循环,它将steps逐个迭代列表并执行shell脚本.

目前,每个步骤都会打印出来,这不是我想要的 -

start
step1
Shell script gave some error...
Shell script gave some error...
start
step2
Shell script gave some error...
Shell script gave some error...
start
step3
Shell script gave some error...
Shell script gave some error...

如果shell脚本在第一步失败,那么我不想去step2但是我想为每一步重试两次.假设步骤1的shell脚本执行失败,那么我想为step1重试两次,如果它失败了两次,那么我不会去step2但是如果它通过了,那么我只会去step2.

如何以这种方式打破外部循环以便我能够完成此任务?

更新: -

for step in steps:
    print "start"
    print step
    for i in xrange(MAX_TRIES):
        proc = subprocess.Popen(shell_script, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        (stdout, stderr) = proc.communicate()
        if stderr:
           print "Shell script gave some error..."
           print stderr
           sleep(0.05) # delay for 50 ms
        else:
            print stdout
            print "end" # Shell script ran fine.
            break
    else:
        break

Veedrac.. 5

在脚本的末尾添加

    else:
        break

else如果没有 a ,则循环有一个被调用的子句break; 所以这将被称为如果breakif...else叫,这是当它所有失败三次.

1 个回答
  • 在脚本的末尾添加

        else:
            break
    

    else如果没有 a ,则循环有一个被调用的子句break; 所以这将被称为如果breakif...else叫,这是当它所有失败三次.

    2023-02-07 16:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有