我在Python中写了一个for循环,它可以遍历一个纳斯达克股票代码的列表。每个符号都在一列中。tickers['Stock Symbol']
而我使用的是 yfinance
包来检索价格信息。为了简化这个例子,假设我只想知道2018年1月1日的价格日期。我的代码就像这样。
import yfinance as yf
tickers = pd.read_csv("/nasdaq.csv")
tickerData = []
for i in range(1114):
price = yf.download(tickers[i],
start='2018-01-01',
end='2018-01-01',
progress=False)
tickerData.append(price)
我在处理日期时遇到的问题是 有些公司在特定的日期并不存在或者没有上市 因此会产生错误信息。我想知道是否有一个python函数可以简单地跳过那些在此产生错误的股票?
我对Python还是个新手,所以我对这里的任何格式问题感到抱歉。我很感谢您的反馈
最简单的方法是添加一个tryexcept块,像这样。
for i in range(1114):
try:
price = yf.download(i, start='2018-01-01', end='2018-01-01', progress=False)
tickerData.append(price)
except Exception:
pass
在上面的代码中,我捕捉了一个通用的异常,因为我不知道你收到的错误。你必须替换 Exception
与您收到的异常类型
你可以将这个错误记录到一个文件中,以了解是否只有这个错误发生,或者有多少公司没有数据等等。
import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)
for i in range(1114):
try:
price = yf.download(i, start='2018-01-01', end='2018-01-01', progress=False)
tickerData.append(price)
except Exception as e:
logging.debug("company number {} did not have data. error:{}".format(i, e))