gpt4 book ai didi

python - 使yfinance错误传播

转载 作者:行者123 更新时间:2023-12-03 08:38:28 24 4
gpt4 key购买 nike

我正在尝试构建一个允许用户将股票添加到投资组合,然后对该投资组合进行分析的应用程序。至关重要的是,仅添加有可用数据的现有库存。如果用户输入了无效的股票代码,则需要进行处理。显而易见的选择是某种尝试除外结构。我已经尝试过了,但是无法弄清楚我的方法失败了。注意:我正在使用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,我创建了一个名为股票的报价对象,然后尝试下载历史市场数据。在某些情况下(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库本身。但这是否意味着错误为时过早?如何使这些错误在程序中进一步传播到需要处理的地方?
我希望这个问题很清楚,如果没有,请要求澄清。在此先感谢您的帮助!

最佳答案

如果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
这样就解决了问题。我希望这将对将来的人们有所帮助。

关于python - 使yfinance错误传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64384911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com