【发布时间】:2020-10-11 23:22:39
【问题描述】:
我正在从 coinbase pro 的产品代码中导入贸易数据。我设置了 for 循环以将特定信息导入特定属性。 for 循环迭代(似乎是)随机次数并吐出一个关键错误。我确定数据集包含它所采购的字典中的属性。我知道这一点,因为它以随机顺序吐出数据,因此它调用的特定属性之前已成功调用过。 (此外,我将这些值分别称为暂停以仔细检查它们是否为空)我还将 for 循环范围减小到大小的三分之一。它似乎仍然有 KeyError(尽管偶尔它确实解析并打印了所有数据。 更新我没有文件中的数据集,因为我从 coinbase pro 调用它,但如果您愿意,我可以添加它提取的数据的文本文件吗?
import cbpro,
public_client = cbpro.PublicClient()
aprods=public_client.get_products()
prods=[temp['id'] for temp in aprods]
for i in range(0,len(prods)):
print(i,prods[i])
tprods={
'id': prods[i],
'price': float(public_client.get_product_ticker(product_id=prods[i]) ['price']),
'h24': float(public_client.get_product_24hr_stats(prods[i]) ['high']),
'l24': float(public_client.get_product_24hr_stats(prods[i]) ['low']),
'range':(float(public_client.get_product_24hr_stats(prods[i]) ['high'])-float(public_client.get_product_24hr_stats(prods[i]) ['low'])),
'%range':100*(float(public_client.get_product_24hr_stats(prods[i]) ['high'])-float(public_client.get_product_24hr_stats(prods[i]) ['low']))/float(public_client.get_product_ticker(product_id=prods[i])['price'])
}
以下是回溯
Traceback (most recent call last):
File "C:\Users\Slide 2.0\Desktop\cryptopj\apt.py", line 24, in <module>
'h24': float(public_client.get_product_24hr_stats(prods[i]) ['high']),
KeyError: 'high'
【问题讨论】:
-
当您handled the error 并检查/打印了东西时,它是否给了您线索?您认为这是您的代码或数据的问题吗?您的minimal reproducible example 应始终包含示例数据,足以重现问题。
-
发布有关产生异常的代码的问题时,请始终包含完整的 Traceback - 复制并粘贴它,然后将其格式化为代码(选择它并输入
ctrl-k) -
感谢您的提示!我已经更新以相应地发布。我认为这是代码,因为当我从 coinbase pro 提取数据时,它不会每次都在同一个位置抛出错误。它可能是一次发送到 CBpro 的多个查询吗? @二战
-
在询问依赖数据的代码时,重要的是在您的问题中包含数据的最小示例。有时您可能想为问题创建假数据 - 只要它忠实地代表实际数据。您越容易让 us 从您的问题中复制和粘贴(以便我们可以执行您的代码并测试我们的解决方案),您获得响应的可能性就越大。将数据复制并粘贴为文本,然后将其格式化为代码。 - 请阅读minimal reproducible example。
标签: python dictionary keyerror coinbase-api