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




