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

Python调用API写入文件仅保留首个结果,其余内容缺失求助

解决Python写入文件仅保留第一个API结果的问题

你的问题核心是文件打开模式错误或写入逻辑未覆盖所有循环内容,导致只有第一个API结果被保存。下面直接给出排查方案和修正代码:

常见错误场景及修复

推荐方案:先收集所有结果,一次性写入(高效且不易出错)

先把所有API返回结果存入列表,最后统一写入文件,避免重复打开文件带来的覆盖问题:

import csv
import requests

# 存储所有API返回结果
all_results = []

# 读取CSV输入文件
with open('input.csv', 'r', encoding='utf-8') as csv_f:
    csv_reader = csv.reader(csv_f)
    # 遍历每行输入数据
    for row in csv_reader:
        # 假设CSV每行第一个元素是要传入API的数字
        input_num = row[0]
        # 调用目标API(替换为你的实际API地址)
        res = requests.get(f"https://your-api-address.com/{input_num}")
        # 解析API返回的JSON结构(你提到返回是{}包裹的内容,直接用json()解析即可)
        api_result = res.json()
        print(api_result)
        # 将结果转为字符串存入列表
        all_results.append(str(api_result))

# 一次性写入所有结果到文件
with open('output.txt', 'w', encoding='utf-8') as output_f:
    # 每个结果单独占一行
    output_f.write('\n'.join(all_results))

备选方案:循环内用追加模式写入

如果不想提前收集结果,也可以在循环中用'a'(追加)模式打开文件,每次写入都会追加到文件末尾,不会覆盖之前的内容:

import csv
import requests

# 读取CSV输入文件
with open('input.csv', 'r', encoding='utf-8') as csv_f:
    csv_reader = csv.reader(csv_f)
    for row in csv_reader:
        input_num = row[0]
        res = requests.get(f"https://your-api-address.com/{input_num}")
        api_result = res.json()
        print(api_result)
        # 用'a'模式打开文件,追加写入当前结果
        with open('output.txt', 'a', encoding='utf-8') as output_f:
            output_f.write(str(api_result) + '\n')

额外提示

  • API调用可能出现网络错误、参数错误等问题,可添加异常捕获避免程序中断:
try:
    res = requests.get(f"https://your-api-address.com/{input_num}")
    res.raise_for_status()  # 触发HTTP状态码错误的异常
    api_result = res.json()
except Exception as e:
    print(f"处理数字{input_num}时出错:{e}")
    all_results.append(f"Error: {input_num} - {str(e)}")
  • 根据你的CSV实际格式调整读取逻辑,比如如果文件包含表头,需要先用next(csv_reader)跳过表头行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:47:28