0

我正在对 GSM 网络执行 Ussd 命令。有时命令会因为未知的细节而失败。

我想做以下事情:

如果向 GSM 网络发出的命令失败,我将等待 4 秒,如果再次失败,我将再等待 6 秒。如果再次失败,我将退出并返回类似“未知 GSM 运营商错误”的信息

我的问题是如何在 Python 中使用 try/except 处理这个循环:

这是没有 try/except 的代码:

def getGsmCode()
    code = somecommand('xyz')
    return code[0]

我试图实现这一点,但它很难看。这是最好的方法吗?

def getGsmCode()
    try:
        code = somecommand('xyz')
        return code[0]
    except:
        pass
        # I will try againg after wait 4 seconds
        time.sleep(4)
        try:
            code = somecommand('xyz')
            return code[0]
        except:
            pass
            # I will try again after wait 6 seconds
            time.sleep(6)
            try:
                code = somecommand('xyz')
                return code[0]
            except:
                pass
                return "unknown GSM Operator Error"

此致,

4

1 回答 1

1

我会使用for循环。

例如:

import time

def somecommand(arg):
    1 / 0

def getGsmCode():
    delays = 4, 6,
    for delay in delays:
        try:
            return somecommand('xyz')[0]
        except:
            #print('sleep {}'.format(delay))
            time.sleep(delay)
    return "unknown GSM Operator Error"

print(getGsmCode())
于 2013-10-23T15:19:21.107 回答