这个keyerror是什么问题?

kelbyhuang 2019-06-06 03:14:03
字典里是有这个键的,运行完程序后报错"keyerror" import requests import json import os url="https://pvp.qq.com/web201605/js/herolist.json" re = requests.get(url) jsonFile = re.json() for m in range(len(jsonFile)): # 数字名字 ename = jsonFile[m]['ename'] # 汉语名字 cname = jsonFile[m]['cname'] # 切割后是字典 列表形式 skinName = jsonFile[m]["skin_name"].split('|') # 计算每个英雄的皮肤多少 skinNumber = len(skinName) print("{0}:{1}个皮肤{2}".format(cname,skinNumber,skinName)) # 此次循环是为了下载图片 构造图片网址 for bigskin in range(1, skinNumber + 1): # 1-skinNumber # 指定图片网址 urlPicture = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(ename) + '/' + str( ename) + '-bigskin-' + str(bigskin) + '.jpg' # 获取图片信息 图片都是二进制 content就是获取二级制信息 picture = requests.get(urlPicture).content # 保存信息 保存图片 if not os.path.exists(os.path.split('d:/hero/')[0]): # 目录不存在创建,makedirs可以创建多级目录 os.makedirs(os.path.split('d:/hero/')[0]) with open('d:\\hero\\' + cname + skinName[bigskin - 1] + '.jpg', 'wb') as f: f.write(picture) print('*'*50) print('所有的图片均以下载完毕,默认存放在d:/hero/') input('请按回车键帮你打开文件夹......') os.startfile ('d:/hero/' ) input('请按回车退出......')
...全文
2770 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
还真是,马超这个没有这个参数,这是腾讯的问题吧!
leiyudirk 2019-12-16
  • 打赏
  • 举报
回复
刚好我也爬了一下王者荣耀的皮肤,这里的问题原因是,herolist.json,这个文件返回的json并不完备。其中,马超这个英雄的对象中,缺少了skin_name,导致程序运行到马超这个对象时,无法解析关键字skin_name。 所以这里就涉及到了编程要考虑的一个大点:程序的健壮性,鲁棒性,其中一个要素输入合法性判断。不能归罪于herolist.json有误,因为这是外部输入,总会有不可避免的不兼容性。需要在调用herolist.json中相关字段前,进行判断,避免程序崩溃。 这个json数据也不够完整,部分英雄的皮肤没有全部列出,当然这个没有影响这个程序运行。
一笑程序猴 2019-06-06
  • 打赏
  • 举报
回复
兄dei,字典可不是这样用的。
如果你的jsonFile是一个字典类型的话,如jsonFile = {'ename':'xxx'}可直接用jsonFile['ename']得到的就是字典中的值xxx。如果jsonFile是一个列表,而列表中保存的又是字典类型的值那么是可以用你代码中方法去访问的。如jsonFile = [{'ename':'xxx'},{'ename':'xxxx'}],这时就可以用jsonFile[m]['cname']去取值了。
但是我猜测你的jsonFile可能是这样的{data:[{"ename":"xxx"},{"ename":"xxx"},{"ename":"xxx"}]}
这种情况的话,可以用如下方式访问:

data = jsonFile['data']
for d in data:
ename = d['ename']

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧