You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python写入CSV文件无数据求助:API拉取内容无法保存

解决CSV文件无数据写入的问题

嘿,看你的代码好像没写完呀(最后卡在csv.Di这里,应该是想创建csv.DictWriter实例吧?),结合你说的脚本不报错但CSV空文件的情况,我给你列几个最容易踩的坑和排查思路:

1. 忘了调用实际写入的方法!

这绝对是最常见的失误——你创建了CSV写入器对象,但如果没调用写入表头或数据的方法,文件当然是空的!举个完整的例子:

import time, json, requests, csv

with open('data.csv', 'w', newline='') as csvfile:
    fieldnames = ['time','last','vwap','high','low','open','vol']
    # 补全创建DictWriter的代码
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
    # 先写入表头(如果需要的话)
    writer.writeheader()
    
    # 调用API获取数据
    try:
        response = requests.get("你的API接口地址")
        # 检查请求是否成功
        response.raise_for_status()
        api_data = response.json()
        # 关键!调用writerow写入单条数据,或者writerows写入多条
        writer.writerow(api_data)
    except Exception as e:
        print(f"出问题啦: {e}")

2. API根本没返回有效数据

先确认你从API拿到的东西是不是你想要的!可以在请求后加两行打印:

response = requests.get("你的API地址")
print("请求状态码:", response.status_code)  # 正常应该是200
print("返回数据:", response.json())  # 看看数据结构和字段名对不对

如果API返回空、字段名和你定义的fieldnames不匹配(比如API里是timestamp你写的time),那写入后要么空文件,要么只有表头。

3. 文件打开的小细节

在Windows环境下,有时候不加newline=''会导致写入额外空行,但不会让文件完全空。不过加上这个参数能避免很多CSV格式问题,建议加上,就像上面代码里那样。

4. 悄悄吞了异常?

如果你的代码里有try-except但没打印错误信息,可能API请求出错了但你完全没察觉。比如网络超时、API返回非JSON格式,这些情况脚本不会直接崩溃,但也拿不到数据写入CSV。所以一定要加上异常捕获并打印错误!

先把代码补全,然后按上面的步骤排查,应该很快就能解决问题啦!

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

火山引擎 最新活动