You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历股票符号列表调用API请求历史数据问题求助

解决股票代码循环遍历问题

你的脚本仅处理第一个股票符号,通常是以下几个原因导致的:

  • 读取文件时未正确获取所有行(比如用了read()而不是readlines(),或者没有去除每行的换行符/空白字符)
  • 循环内部存在提前终止的逻辑(比如return语句、未捕获的异常导致循环中断)
  • API调用失败后未处理错误,直接终止了后续执行

下面是修复后的完整示例脚本,包含正确的文件读取、循环遍历、API调用和错误处理:

import pandas as pd
import requests

# 替换为你的TwelveData API密钥
API_KEY = "your_api_key_here"
BASE_URL = "https://api.twelvedata.com/time_series"

# 读取股票代码文件,处理每行的空白字符
with open("testsymbol.txt", "r") as f:
    symbols = [line.strip() for line in f if line.strip()]  # 过滤空行并去除换行符

# 遍历每个股票代码
for symbol in symbols:
    try:
        # 构造API请求参数
        params = {
            "symbol": symbol,
            "interval": "1day",  # 根据需求调整时间间隔
            "apikey": API_KEY,
            "outputsize": "30"  # 获取最近30条数据,可按需修改
        }
        
        # 发送API请求
        response = requests.get(BASE_URL, params=params)
        response.raise_for_status()  # 检查请求是否成功
        
        # 解析响应数据为DataFrame
        data = response.json()
        if "values" not in data:
            print(f"未获取到{symbol}的数据")
            continue
        
        df = pd.DataFrame(data["values"])
        # 调整列顺序(可选,根据API返回结构调整)
        df = df[["datetime", "open", "high", "low", "close", "volume"]]
        
        # 保存为CSV文件,文件名包含股票代码
        csv_filename = f"{symbol}_historical_data.csv"
        df.to_csv(csv_filename, index=False)
        print(f"{symbol}的数据已成功保存到{csv_filename}")
    
    except Exception as e:
        print(f"处理{symbol}时出错: {str(e)}")
        continue  # 出错后继续处理下一个股票代码

关键修复点说明:

  1. 文件读取:使用列表推导式读取所有行,strip()去除每行的换行符和首尾空白,同时过滤空行,确保每个元素都是有效的股票代码。
  2. 循环逻辑:使用for symbol in symbols遍历所有代码,没有提前终止的语句。
  3. 错误处理:包裹try-except块,即使某个股票代码处理失败,也会继续执行后续代码,不会中断整个循环。
  4. API响应检查:添加response.raise_for_status()捕获HTTP请求错误,同时检查响应中是否包含values字段,避免因API返回异常导致的DataFrame构造失败。

内容的提问来源于stack exchange,提问作者Chester205

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:33:11