我正在尝试构建一个应用程序,允许用户将股票添加到投资组合中,然后对该投资组合进行分析。必须只添加现有库存,即有数据的库存。如果用户输入了无效的股票代码,则需要进行处理。显而易见的选择是某种 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
在 Stock 类中,我正在实现一个 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 类功能,创建一个股票对象,下载其数据,并在最好的情况下将其添加到tk.StringVar
投资组合字符串中。我的问题是:无论我决定在条目中输入什么废话,它都会被添加到投资组合字符串中,从而出现在标签中。
终端中会显示一条消息,说明:- {some nonsense sequence}: No data found, symbol may be delisted
此消息很可能来自 yfinance 库本身。但这是否意味着错误被处理得太早了?如何使这些错误在程序中进一步传播到需要处理的地方?
我希望问题很清楚,如果没有,请要求澄清。提前感谢您的帮助!