Python实现多股票数据批量导出为不同文件名CSV的方法求助
嘿,很高兴看到你已经搞定了单只股票数据的提取与导出!针对你想自动循环处理300多只股票、每只单独导出CSV的需求,我来给你梳理一套实用的解决方案:
核心思路
其实逻辑很清晰:把所有要处理的股票代码整理成一个列表,然后通过循环遍历这个列表,对每只股票重复执行你已经掌握的提取逻辑,关键是给每只股票生成专属的CSV文件名,避免数据被覆盖。
优化后的代码示例
我帮你把原来的代码改成了循环版本,还加了新手友好的容错处理:
import investpy # 如果需要控制请求频率,可添加此模块 # import time # 1. 准备你的股票列表:把300多只股票代码都放这里 # 后续会讲如何从文件批量读取,不用手动输入 stock_list = ['JFC', 'ABC', 'BDO', 'SM'] # 替换成你的完整股票代码列表 # 2. 定义通用参数(不用每次循环重复写) country = 'philippines' from_date = '25/11/2020' to_date = '18/12/2020' # 3. 循环处理每一只股票 for stock_code in stock_list: try: # 提取当前股票的历史数据 stock_data = investpy.get_stock_historical_data( stock=stock_code, country=country, from_date=from_date, to_date=to_date ) # 导出到专属CSV文件(比如JFC_historical_data.csv) stock_data.to_csv(f"{stock_code}_historical_data.csv") print(f✅ 成功导出 {stock_code} 的数据到 {stock_code}_historical_data.csv") # 可选:添加1秒延迟,避免请求过于频繁被限制 # time.sleep(1) except Exception as error: # 某只股票处理失败时,不会中断整个循环,还能看到错误原因 print(f❌ 处理 {stock_code} 时出错:{str(error)}")
额外实用技巧
- 从文件批量读取股票列表:如果300多只股票代码存在Excel或CSV里,不用手动敲到代码里,用pandas就能轻松读取:
import pandas as pd # 假设你的股票列表存在stock_list.csv里,列名为"code" stock_df = pd.read_csv("stock_list.csv") stock_list = stock_df['code'].tolist()
为什么替换sys.stdout重定向?:你原来的代码用
sys.stdout写文件,其实pandas的DataFrame自带to_csv()方法,更直接稳定,能自动处理CSV的格式问题,比打印输出靠谱多啦。容错处理的必要性:加
try-except块是为了防止某一只股票代码无效、网络波动等问题导致整个循环崩溃,这样你能精准定位出错的股票,不影响其他股票的处理。
内容的提问来源于stack exchange,提问作者Leo M




