在脚本运行一段时间后出现两个错误,keyerror 和 typeerror



在无休止地运行这段代码后,它会随机崩溃并抛出这两个错误:

TypeError: string indices must be integers

Keyerror: l (this is the letter "L", FWIW)

这里的问题是有效,然后崩溃。有时它会在 while True 循环的第一次迭代后崩溃,有时它可以在崩溃前运行长达 20 分钟。

这是一段代码。它正在从Bitmex中提取OHLC价格数据。它所做的是取最后 30 根 1 分钟的蜡烛,然后从所有 30 根蜡烛中找到最低的"低"价格。如果您通过导入 bitmex、json 和请求来尝试它,那么每次手动尝试都应该没有问题。当它在循环中运行时,它会随机崩溃。有什么想法吗?

def lowest_price():
    response = requests.get("https://www.bitmex.com/api/v1/trade/bucketed?binSize=1m&partial=false&symbol=XBTUSD&count=30&reverse=true").json()
    minimum = min([l['low'] for l in response])
    return(minimum)

原因是有时,您从脚本无法解析的服务器获取结果。

当您的 JSON 结果解码为字符串list时,会发生TypeError;例如,["Invalid input"] .显然,"Invalid input"['low']没有意义,因为您无法使用字符串键为字符串编制索引。

另一方面,当您获得表示list的 JSON 对象时,会发生KeyError dicts ,*其中至少有一个不包含 'low' 键。

要解决此问题,您可以将解析逻辑包装在一个 try-except 块中,该块查找所需的数据,如果找不到,则返回类似 None 的内容。您还可以检查get调用的结果代码。

最新更新