如何使用 yfinance 检测失败的下载
How to detect failed downloads using yfinance
我正在使用 API yfinance:https://github.com/ranaroussi/yfinance
使用下面的简单代码:
data = yf.download("A AA AAA Z LOL KE QP")
我得到以下输出:
[*********************100%***********************] 7 of 7 completed
2 Failed downloads:
- LOL: 1d data not available for startTime=-2208988800 and endTime=1621954979. Only 100 years worth of day granularity data are allowed to be fetched per request.
- QP: 1d data not available for startTime=-2208988800 and endTime=1621954979. Only 100 years worth of day granularity data are allowed to be fetched per request.
我想知道如何在我的代码中检测到“LOL”和“QP”失败?
在对数据输出进行了更多尝试后,我发现了一种检查失败值的非优雅方法,例如元素“LOL”:
all(pd.isna(v) for v in dict(data.Close["LOL"]).values())
它检查收盘价是否所有值都为 nan。
此方法有效,但我认为不是最佳方法,可能有更好更简单的方法。希望有人能找到它:)
这是在 yfinance 包中抛出 'error' 的代码。这不是一个真正的错误,所以你可能想要覆盖相当大的函数 download
。
if shared._ERRORS:
print('\n%.f Failed download%s:' % (
len(shared._ERRORS), 's' if len(shared._ERRORS) > 1 else ''))
# print(shared._ERRORS)
print("\n".join(['- %s: %s' %
v for v in list(shared._ERRORS.items())]))
编辑
如果找到获取失败下载的方法:
只需导入 shared.py
文件并获取 ERRORS
字典。
此字典存储下载方法的最后错误。它在下载前被重置,因此可以在下载后立即访问。
只需使用以下代码:
import yfinance.shared as shared
data = yf.download("A AA AAA Z LOL KE QP")
print(list(shared._ERRORS.keys()))
我正在使用 API yfinance:https://github.com/ranaroussi/yfinance
使用下面的简单代码:
data = yf.download("A AA AAA Z LOL KE QP")
我得到以下输出:
[*********************100%***********************] 7 of 7 completed
2 Failed downloads:
- LOL: 1d data not available for startTime=-2208988800 and endTime=1621954979. Only 100 years worth of day granularity data are allowed to be fetched per request.
- QP: 1d data not available for startTime=-2208988800 and endTime=1621954979. Only 100 years worth of day granularity data are allowed to be fetched per request.
我想知道如何在我的代码中检测到“LOL”和“QP”失败?
在对数据输出进行了更多尝试后,我发现了一种检查失败值的非优雅方法,例如元素“LOL”:
all(pd.isna(v) for v in dict(data.Close["LOL"]).values())
它检查收盘价是否所有值都为 nan。
此方法有效,但我认为不是最佳方法,可能有更好更简单的方法。希望有人能找到它:)
这是在 yfinance 包中抛出 'error' 的代码。这不是一个真正的错误,所以你可能想要覆盖相当大的函数 download
。
if shared._ERRORS:
print('\n%.f Failed download%s:' % (
len(shared._ERRORS), 's' if len(shared._ERRORS) > 1 else ''))
# print(shared._ERRORS)
print("\n".join(['- %s: %s' %
v for v in list(shared._ERRORS.items())]))
编辑
如果找到获取失败下载的方法:
只需导入 shared.py
文件并获取 ERRORS
字典。
此字典存储下载方法的最后错误。它在下载前被重置,因此可以在下载后立即访问。
只需使用以下代码:
import yfinance.shared as shared
data = yf.download("A AA AAA Z LOL KE QP")
print(list(shared._ERRORS.keys()))