使用Python脚本调用Youtube API生成CSV文件时数据无法写入如何解决?
问题修复说明
核心错误点
- 变量名拼写错误:循环中定义的存储单条数据的变量名为
videos_data_row,写入时调用的是video_data_row,二者不一致导致写入动作实际执行失败 - Windows路径转义异常:Python字符串中
\为转义符,直接书写的本地路径会被转义解析,可能导致文件对象生成异常 - 可选优化:可以直接调用requests响应的
json()方法解析返回数据,无需手动调用json.loads,同时建议先打印接口返回内容确认API请求正常,避免密钥过期、配额耗尽等接口层面的问题导致没有数据返回
修复后完整代码
import csv import requests # 注意后续替换为自己的API密钥,避免示例密钥过期或配额耗尽不可用 api_url = "https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCJFp8uSYCjXOMnkUyb3CQ3Q&key=AIzaSyDaMzUYRFzDfjMq-bTm38Y_1swWDMfg03E" api_response = requests.get(api_url) # 直接用内置方法解析响应内容 videos = api_response.json() # 路径前加r标记为原始字符串,避免转义问题;新增newline参数避免Windows下csv出现多余空行 with open(r"C:\Users\jacks\Documents\PythonScripts\youtube_videos.csv", "w", encoding="utf-8", newline='') as csv_file: csv_writer = csv.writer(csv_file) csv_writer.writerow(["publishedAt", "title", "description", "thumbnailurl"]) if videos.get("items") is not None: for video in videos.get("items"): # 统一变量名 video_data_row = [ video["snippet"]["publishedAt"], video["snippet"]["title"], video["snippet"]["description"], video["snippet"]["thumbnails"]["default"]["url"] ] csv_writer.writerow(video_data_row)
内容的提问来源于stack exchange,提问作者Jackson Denti
相关产品推荐
相关产品推荐

