如何在Python中同时执行多个函数并返回所有结果?
解决Python中同时返回多份tvDatafeed数据表格的问题
你当前的代码里,仅通过单独写变量名的方式,在Python交互式环境(如Jupyter)中只会返回最后一个变量的内容。要获取所有返回的表格,可采用以下几种实用方法:
方法1:使用print()逐个输出
直接为每个数据变量调用print(),可以依次打印所有表格:
from tvDatafeed import TvDatafeed, Interval username = 'YourTradingViewUsername' password = 'YourTradingViewPassword' tv = TvDatafeed(username, password) # 获取各类数据 nifty_index_data = tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1000) nifty_futures_data = tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1000,fut_contract=1) crudeoil_data = tv.get_hist(symbol='CRUDEOIL',exchange='MCX',interval=Interval.in_1_hour,n_bars=5000,fut_contract=1) extended_price_data = tv.get_hist(symbol="EICHERMOT",exchange="NSE",interval=Interval.in_1_hour,n_bars=500, extended_session=False) # 逐个打印所有数据表格 print("Nifty指数数据:") print(nifty_index_data) print("\nNifty期货数据:") print(nifty_futures_data) print("\n原油期货数据:") print(crudeoil_data) print("\nEICHERMOT常规时段数据:") print(extended_price_data)
方法2:将数据存入容器后返回
把所有数据变量放进列表或元组,最后返回这个容器,就能一次性看到所有内容:
from tvDatafeed import TvDatafeed, Interval username = 'YourTradingViewUsername' password = 'YourTradingViewPassword' tv = TvDatafeed(username, password) nifty_index_data = tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1000) nifty_futures_data = tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1000,fut_contract=1) crudeoil_data = tv.get_hist(symbol='CRUDEOIL',exchange='MCX',interval=Interval.in_1_hour,n_bars=5000,fut_contract=1) extended_price_data = tv.get_hist(symbol="EICHERMOT",exchange="NSE",interval=Interval.in_1_hour,n_bars=500, extended_session=False) # 用元组打包所有数据 all_data = (nifty_index_data, nifty_futures_data, crudeoil_data, extended_price_data) all_data
方法3:在Jupyter环境中用display()展示(更美观)
如果是在Jupyter Notebook/Lab中运行,导入display函数可以更美观地逐个展示表格:
from tvDatafeed import TvDatafeed, Interval from IPython.display import display username = 'YourTradingViewUsername' password = 'YourTradingViewPassword' tv = TvDatafeed(username, password) nifty_index_data = tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1000) nifty_futures_data = tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1000,fut_contract=1) crudeoil_data = tv.get_hist(symbol='CRUDEOIL',exchange='MCX',interval=Interval.in_1_hour,n_bars=5000,fut_contract=1) extended_price_data = tv.get_hist(symbol="EICHERMOT",exchange="NSE",interval=Interval.in_1_hour,n_bars=500, extended_session=False) # 逐个展示数据表格 display(nifty_index_data) display(nifty_futures_data) display(crudeoil_data) display(extended_price_data)
方法4:存入字典(方便后续按名称调用)
把数据存入字典,既可以查看所有表格,也能后续通过键名快速获取对应数据:
from tvDatafeed import TvDatafeed, Interval username = 'YourTradingViewUsername' password = 'YourTradingViewPassword' tv = TvDatafeed(username, password) # 用字典存储所有数据,键为自定义名称,值为对应数据表格 all_data_dict = { "nifty_index": tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1000), "nifty_futures": tv.get_hist(symbol='NIFTY',exchange='NSE',interval=Interval.in_1_hour,n_bars=1000,fut_contract=1), "crudeoil_futures": tv.get_hist(symbol='CRUDEOIL',exchange='MCX',interval=Interval.in_1_hour,n_bars=5000,fut_contract=1), "eichermot_regular": tv.get_hist(symbol="EICHERMOT",exchange="NSE",interval=Interval.in_1_hour,n_bars=500, extended_session=False) } # 遍历字典打印所有数据 for name, data in all_data_dict.items(): print(f"\n{name}数据:") print(data)
内容的提问来源于stack exchange,提问作者Anurag Jha
相关产品推荐
相关产品推荐

