如何解决除了 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 举报,一经查实,本站将立刻删除。