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

Python main函数内循环拉取接口资源时数据覆盖问题求解

修复方案

存在的问题

  1. Config_local中RES_EXT列表存在语法错误:
    • 第二个元素末尾缺失逗号
    • 第三个元素的结尾单引号位置错误,会直接触发语法报错
  2. 主逻辑问题:main()函数中仅在循环结束后处理请求结果,resource_alerts_response变量每次循环都会被新值覆盖,最终仅保留最后一次请求的结果
  3. 注释的get_all_text函数逻辑错误:return语句写在循环内部,第一次循环执行后就会直接返回,无法遍历所有资源

修复步骤

1. 修复RES_EXT语法错误

RES_EXT = [ 
    'resource-alerts?count=500&start=1',
    'resource-alerts?count=500&start=501',
    'resource-alerts?count=500&start=1001',
    'resource-alerts?count=500&start=1501'
]

2. 调整main函数逻辑,合并所有分页数据

修改思路为每次循环处理当前请求返回的数据,暂存到列表中,所有分页拉取完成后再合并为完整的DataFrame:

def main():
    move_csv_files()
    session = requests.Session()
    session_id = get_session_id(session)
    # 初始化列表存储所有分页的DataFrame
    df_all = []
    for res in RES_EXT:
        resource_alerts_response = get_resource_alerts_response(session, session_id, res)
        print(resource_alerts_response)
        # 处理当前分页数据并加入列表
        df_single = resource_alerts_to_df(resource_alerts_response)
        df_all.append(df_single)
    # 合并所有分页数据,重置索引
    df_total = pd.concat(df_all, ignore_index=True)
    print(df_total)
    send_email(df_total)

可选优化:避免重复写本地文件

当前resource_alerts_to_df会重复覆盖OUTFILE,如果不需要保留中间csv文件,可以直接从响应流读取数据,提升效率:

def resource_alerts_to_df(resource_alerts_response):
    return pd.read_csv(resource_alerts_response.raw)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 19:54:08