在For Loop中跳过错误的方法python

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

我在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还是个新手,所以我对这里的任何格式问题感到抱歉。我很感谢您的反馈

python for-loop yahoo-finance
1个回答
1
投票

最简单的方法是添加一个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 与您收到的异常类型


0
投票

你可以将这个错误记录到一个文件中,以了解是否只有这个错误发生,或者有多少公司没有数据等等。

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))
© www.soinside.com 2019 - 2024. All rights reserved.