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

问题描述 投票:0回答:1

在无尽的True循环中运行这段代码后,它会随机崩溃并抛出这两个错误:

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)
python debugging typeerror keyerror
1个回答
0
投票

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

当您的JSON结果被解码为TypeError字符串时,就会出现list;说,["Invalid input"]。很明显"Invalid input"['low']毫无意义,因为你不能用字符串键索引字符串。

另一方面,KeyError发生在你得到一个代表listdicts的JSON对象时,*其中至少有一个不包含'low'密钥。

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

© www.soinside.com 2019 - 2024. All rights reserved.