使用tradingview_ta库时出现NoneType无summary属性的AttributeError问题
解决AttributeError: 'NoneType' object has no attribute 'summary'错误
问题场景
读取包含印度NSE市场股票代码的CSV文件,通过TA_Handler调用TradingView分析接口时,部分股票(如A2ZINFRA)触发以下错误:
AttributeError: 'NoneType' object has no attribute 'summary'
部分股票可正常返回结果,例如:
5PAISA {'RECOMMENDATION': 'SELL', 'BUY': 6, 'SELL': 10, 'NEUTRAL': 10} 63MOONS {'RECOMMENDATION': 'SELL', 'BUY': 3, 'SELL': 14, 'NEUTRAL': 9}
原代码如下:
import pandas as pd from tradingview_ta import TA_Handler, Interval, Exchange stkfilename = f"F:/Python/HistoricStockInfo/StockName.csv" stkFile = pd.read_csv(stkfilename) for i in range(len(stkFile)): #print(stkFile['Symbol'].iloc[i]) NIFTY = TA_Handler( symbol=stkFile['Symbol'].iloc[i], #symbol = "ACE", screener="india", exchange="NSE", interval=Interval.INTERVAL_1_WEEK ) result = NIFTY.get_analysis().summary if NIFTY.get_analysis().summary: summary = (result.find('summary').text or '').encode('utf8') #if result['RECOMMENDATION']=="STRONG_BUY": if result is None: print(stkFile['Symbol'].iloc[i]) print(result) else: print("Symbol not found")
错误原因
get_analysis()方法在部分股票上会返回None(比如股票在TradingView数据库无数据、接口请求超时/失败),此时直接访问.summary会触发属性错误- 重复调用
get_analysis(),既浪费接口请求次数,也可能导致返回结果不一致 - 结果判断逻辑颠倒:当
result为None时输出股票代码,但实际出错时result根本无法被赋值,且逻辑上应该是有结果时输出股票和分析,无结果时提示未找到
修复后的代码
import pandas as pd from tradingview_ta import TA_Handler, Interval, Exchange stkfilename = f"F:/Python/HistoricStockInfo/StockName.csv" stkFile = pd.read_csv(stkfilename) for i in range(len(stkFile)): symbol = stkFile['Symbol'].iloc[i] try: # 初始化TA_Handler ta_handler = TA_Handler( symbol=symbol, screener="india", exchange="NSE", interval=Interval.INTERVAL_1_WEEK ) # 只调用一次get_analysis(),避免重复请求 analysis = ta_handler.get_analysis() if analysis and hasattr(analysis, 'summary'): result = analysis.summary print(symbol) print(result) # 这里可以添加你的筛选逻辑,比如筛选STRONG_BUY # if result['RECOMMENDATION'] == "STRONG_BUY": # print(f"符合条件: {symbol}") else: print(f"{symbol}: 未获取到有效分析结果") except Exception as e: print(f"{symbol}: 处理出错 - {str(e)}")
修复说明
- 先获取
analysis对象,判断其是否存在且包含summary属性,再访问summary,避免属性错误 - 仅调用一次
get_analysis(),减少接口请求开销 - 增加
try-except捕获所有可能的异常(比如网络错误、接口返回异常等),避免程序中断 - 修正逻辑判断,正确输出有效结果和错误提示
- 提取
symbol变量,提升代码可读性
内容的提问来源于stack exchange,提问作者shubham
相关产品推荐
相关产品推荐

