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
相关产品推荐
相关产品推荐

