鱿鱼西 2022-09-16 13:36 采纳率: 85.2%
浏览 28
已结题

python调用cmd顺序执行命令失败

问题遇到的现象和发生背景

python调用cmd顺序执行命令失败

代码

from time import time
from openpyxl import load_workbook
from tenacity import retry
import subprocess
from tenacity import retry,stop_after_attempt
import subprocess

global i
i=0

def replace(obj):
    if obj is None:
        obj = ''
        return obj

wb = load_workbook("./csv/information.xlsx")

'''
excel.xlsx格式
Bug         Date              De
41           2022-06          g:9
41           2022-09          g:6
'''

ws = wb['Sheet1']
contexts = []
for row in range(2, ws.max_row + 1):
    bug_id = ws["A" + str(row)].value
    date_id = ws["B" + str(row)].value
    dev_id = ws["C" + str(row)].value
    context=f".\Get \"{date_id}\" -devId \"{dev_id}\" -Path \"D:\\{bug_id}.txt\""
    contexts.append(context)
print(contexts)


# for context in contexts:
#     print(context)
# s = "&" .join (contexts)
# print(s)


@retry(stop=stop_after_attempt(2))
def runcmd():
    
    ret = subprocess.run(contexts[i],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8",cwd=r'C:\Users\Localadmin\Desktop\GetData\')
    for i in contexts:
        if ret.returncode!=0:
            i=i+1
    if ret.returncode != 0:
        print("error:",ret)
        print('失败重试中') 
        raise Exception
    
    else:
        print("success:",ret)

runcmd('%s'%contexts[i])#字符串参数

运行结果

如果执行命令失败重试2次之后就直接报错,不会执行下一条命令

我想要达到的结果

执行命令失败后重试两次,如果还失败就执行下一条,执行成功就直接执行下一条,直到执行完所有命令

  • 写回答

2条回答 默认 最新

  • _GX_ 2022-09-16 14:12
    关注

    最后一句改为

    try:
        runcmd('%s'%contexts[i])#字符串参数
    except:
        pass
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 创建了问题 9月16日

悬赏问题

  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗