Python异常无效语法

2024-10-06 10:30:10 发布

您现在位置:Python中文网/ 问答频道 /正文

Pythonexcept不工作。我正在努力

r = requests.get('URL') # URL returns something like: {"code": ["12345678"]} 
print(r.text)
parse = json.loads(r.text)

getcode = False
while not getcode:
    time.sleep(2)
    codeparse = parse["code"]
    print("Unable to get SMS Code, sleeping for 2 seconds...")
except KeyError:
    pass

getcode = parse["code"]

我知道的一切都试过了。有什么我需要导入的还是我缺少的

编辑:更新以根据请求添加更多代码


Tags: textjsonfalseurlgetparsecoderequests
3条回答

这就是try-except方法的工作原理。。。 尝试一些语句,如果它引发一些错误,则将运行except块

try:
    print(0/0)
except KeyError:
    print('keyerror')
    '''in this block you can add what will happen if the error 
    raised in the try block raises an KeyError'''
except:
    print('some error occured')

这只是无效语法:不能将except块作为while循环的一部分:

while not getcode:
    ...
except KeyError:
    pass

REPL中的示例:

>>> while 1:
...  print("g")
... except KeyError:
  File "<stdin>", line 3
    except KeyError:
    ^
SyntaxError: invalid syntax
>>>

因此,无论循环中有什么,都会立即得到一个SyntaxError

正确的语法是:

try:
   # some code
   ...
except KeyError:
   ...

我假设您正在尝试使用"code"键读取字典parse中的值,如果没有这样的条目,则等待2秒钟重试

试试这个:

print(r.text)
parse = json.loads(r.text)

while True:
    try:
        codeparse = parse["code"]
        break
        
    except KeyError:
        print("Unable to get SMS Code, sleeping for 2 seconds...")
        time.sleep(2)

print("The value is", codeparse)

相关问题 更多 >