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

Python调用iTunes API后将响应写入txt文件失败求助

iTunes API结果写入文件失败的修复方案

可能的问题点

  • 文件路径不符预期:songname.txt使用相对路径,可能被写入到脚本执行的当前工作目录(而非你预期的文件夹),导致你找不到文件
  • API无匹配结果时崩溃:如果搜索关键词没有匹配到歌曲,直接访问O["results"]会触发KeyError,代码提前终止,文件写入不完整或未写入
  • 特殊字符编码问题:部分歌曲名包含特殊字符,默认编码可能导致写入失败或乱码

修复后的代码

import requests
import sys
from pathlib import Path

def main():
    if len(sys.argv) < 2:
        print("请传入搜索关键词")
        sys.exit()
    
    # 用f-string构造URL,格式更规范
    url = f"https://itunes.apple.com/search?entity=song&limit=50&term={sys.argv[1]}"
    response = requests.get(url)
    # 检查请求是否成功,失败直接抛出异常
    response.raise_for_status()
    data = response.json()
    
    # 校验是否有有效结果
    if "results" not in data or not data["results"]:
        print("未搜索到匹配的歌曲")
        sys.exit()
    
    # 固定文件保存路径:脚本所在目录下的songname.txt
    save_path = Path(__file__).parent / "songname.txt"
    # 指定utf-8编码,确保特殊字符正常写入
    with open(save_path, "w", encoding="utf-8") as f:
        for result in data["results"]:
            # 用get方法避免缺失trackName字段报错
            track_name = result.get("trackName", "未知歌曲")
            print(track_name)
            print(track_name, file=f)

if __name__ == "__main__":
    main()

关键改进说明

  • 加入response.raise_for_status():API请求失败(如网络错误、参数错误)时直接报错,快速定位问题
  • 用Path(__file__).parent固定路径:确保文件写入到脚本所在文件夹,避免找不到文件
  • 指定encoding="utf-8":解决特殊字符写入乱码或失败的问题
  • 用result.get()替代直接索引:避免部分结果缺失trackName字段导致代码崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:22:45