微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

除了 Python 中的异常错误处理不起作用

如何解决除了 Python 中的异常错误处理不起作用

我正在尝试从所有与 FTSE250 相关的股票中获取股票市场信息。 我使用 Yahoo_Fin 这样做。该代码有效,但我收到一个错误提示股票已退市。 因此,我试图放入一个异常代码。我阅读了有关 try 和 except 库的文档,但找不到正确的答案。我没有收到语法错误,但除了异常代码没有任何作用。

编辑:将两个例外设置为有效,以下是更新后的代码

index_df = pdr.get_data_yahoo(index_name,start_date,end_date,progress=False)
index_df['Percent Change'] = index_df['Adj Close'].pct_change()
index_return = (index_df['Percent Change'] + 1).cumprod()[-1]

for ticker in tickers:
    # Download historical data as CSV for each stock (makes the process faster)
  try:
      df = pdr.get_data_yahoo(ticker,progress=False)
      df.to_csv(f'{ticker}.csv')
  except: 
    except Exception: 
    if ticker not in tickers:
    next(ticker)

for ticker in tickers:
  try:

   # Calculating returns relative to the market (returns multiple)
    df['Percent Change'] = df['Adj Close'].pct_change()
    stock_return = (df['Percent Change'] + 1).cumprod()[-1]
    
    returns_multiple = round((stock_return / index_return),2)
    returns_multiples.extend([returns_multiple])

  except Exception: 
   if ticker not in tickers:
    next(ticker)

解决方法

你的例外对我来说没有意义。您正在遍历代码,然后检查代码是否不在代码中。这将始终为 False,因此您的“下一个”语句永远不会执行,它只会继续执行。

看起来你想要的是这样的:

for ticker in tickers:
    # Download historical data as CSV for each stock (makes the process faster)
    try:
        df = pdr.get_data_yahoo(ticker,start_date,end_date,progress=False)
        df.to_csv(f'{ticker}.csv')

        # Calculating returns relative to the market (returns multiple)
        df['Percent Change'] = df['Adj Close'].pct_change()
        stock_return = (df['Percent Change'] + 1).cumprod()[-1]

        returns_multiple = round((stock_return / index_return),2)
        returns_multiples.extend([returns_multiple])

        #change the name of the stock index
        print (f'Ticker: {ticker};  Returns Multiple against FTSE 250 : {returns_multiple}\n')
        time.sleep(1)
 
    except IndexError:
        print(f"Error in ticker: {ticker},skipping...")

根据回溯的内容传递正确的 except 条件的位置(无法判断是 FileNotFoundError 还是 IndexError)。但我认为您想要做的就是处理列表中的下一个代码?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。