使 yfinance 错误传播
Making yfinance errors propagate
我正在尝试构建一个应用程序,允许用户将股票添加到投资组合中,然后对该投资组合进行分析。必须仅添加现有库存,即那些数据可用的库存。如果用户输入了无效的股票代码,则需要进行处理。显而易见的选择是某种 try-except 结构。我试过这个,但无法弄清楚我的方法在哪里失败。注:我是用yfinance下载股票数据
def getData(self, period):
try:
stock = yf.Ticker(self.ticker)
data = stock.history(period = period)
return data
except Exception as exception:
print(exception)
raise Exception
Inside a Stock class 我正在实现一个 getData() 函数。我使用 yfinance 创建了一个名为 stock 的代码对象,然后尝试下载历史市场数据。这在某些情况下效果很好(AAPL、TSLA、...、真实股票代码)。
在主应用程序中,我有一个标签,如果股票有效,该标签将被更新:
def extendPortfolio():
try:
stock = st.Stock(stock_entry.get().upper())
data = stock.getData("1mo")
self.portfolio.append(stock)
portfolioString.set(portfolioString.get() + "\n" + stock.__str__())
except Exception as exception:
print(exception)
使用 Stock class 功能,创建一个股票对象,下载其数据,并尽最大努力将其添加到 tk.StringVar
投资组合字符串中。我的问题是:无论我决定在条目中输入什么废话,它都会被添加到投资组合字符串中,从而出现在标签中。
终端中显示一条消息:- {some nonsense sequence}: No data found, symbol may be delisted
此消息很可能来自 yfinance 库本身。但这是否意味着错误被处理得太早了?我怎样才能使这些错误在程序中进一步传播到需要处理它们的地方?
我希望问题很清楚,如果不清楚,请要求澄清。在此先感谢您的帮助!
如果 yfinance 无法下载数据,它不会引发异常——它提供一个空数据框。为确保只添加有效股票,请检查提供的数据框是否为空。
def getData(self, period):
try:
stock = yf.Ticker(self.ticker)
data = stock.history(period = period)
if data.empty:
raise Exception
except:
print("data is empty")
raise Exception
else:
return data
这解决了问题。我希望这对以后的人有所帮助。
我正在尝试构建一个应用程序,允许用户将股票添加到投资组合中,然后对该投资组合进行分析。必须仅添加现有库存,即那些数据可用的库存。如果用户输入了无效的股票代码,则需要进行处理。显而易见的选择是某种 try-except 结构。我试过这个,但无法弄清楚我的方法在哪里失败。注:我是用yfinance下载股票数据
def getData(self, period):
try:
stock = yf.Ticker(self.ticker)
data = stock.history(period = period)
return data
except Exception as exception:
print(exception)
raise Exception
Inside a Stock class 我正在实现一个 getData() 函数。我使用 yfinance 创建了一个名为 stock 的代码对象,然后尝试下载历史市场数据。这在某些情况下效果很好(AAPL、TSLA、...、真实股票代码)。
在主应用程序中,我有一个标签,如果股票有效,该标签将被更新:
def extendPortfolio():
try:
stock = st.Stock(stock_entry.get().upper())
data = stock.getData("1mo")
self.portfolio.append(stock)
portfolioString.set(portfolioString.get() + "\n" + stock.__str__())
except Exception as exception:
print(exception)
使用 Stock class 功能,创建一个股票对象,下载其数据,并尽最大努力将其添加到 tk.StringVar
投资组合字符串中。我的问题是:无论我决定在条目中输入什么废话,它都会被添加到投资组合字符串中,从而出现在标签中。
终端中显示一条消息:- {some nonsense sequence}: No data found, symbol may be delisted
此消息很可能来自 yfinance 库本身。但这是否意味着错误被处理得太早了?我怎样才能使这些错误在程序中进一步传播到需要处理它们的地方?
我希望问题很清楚,如果不清楚,请要求澄清。在此先感谢您的帮助!
如果 yfinance 无法下载数据,它不会引发异常——它提供一个空数据框。为确保只添加有效股票,请检查提供的数据框是否为空。
def getData(self, period):
try:
stock = yf.Ticker(self.ticker)
data = stock.history(period = period)
if data.empty:
raise Exception
except:
print("data is empty")
raise Exception
else:
return data
这解决了问题。我希望这对以后的人有所帮助。