Python “错误:'dict'对象没有'load'属性”

3 投票
1 回答
4673 浏览
提问于 2025-04-18 13:23

我刚接触Python,最近在做一个IRC机器人。现在让我头疼的是我添加的一个YouTube提取命令。

这是我的代码:

if text.find(':'+prefix+'yt') != -1:
    idb = text.split(':'+prefix+'yt')
    videoid = idb[1].strip()
    if len(videoid) == 11:
        try:
            url = 'http://gdata.youtube.com/feeds/api/videos/'+videoid+'?alt=json&v=2'
            json = json.load(urllib2.urlopen(url))
            title = json['entry']['title']['$t']
            author = json['entry']['author'][0]['name']['$t']
            irc.send('PRIVMSG '+home+' :'+str(title)+' | by '+str(author)+' | http://www.youtube.com/watch?v='+str(videoid)+' \r\n')
        except Exception, e:
            irc.send('PRIVMSG '+home+' :Could not look up video, check your ID. \r\n')
            print "Error",e
            pass
    else:
        irc.send('PRIVMSG '+home+' :Could not look up video, video ID must be at least 11 characters. \r\n');

第一次运行的时候,它是正常工作的:

[14:57:23] <@Snowstormer> @yt Kwwl9jiJ1A4
[14:57:24] <GotBot> "Take Back the Night" - A Minecraft Original Music Video | by CaptainSparklez | http://www.youtube.com/watch?v=Kwwl9jiJ1A4

但是下次运行时就变成了:

[14:57:27] <@Snowstormer> @yt Kwwl9jiJ1A4
[14:57:27] <GotBot> Could not look up video, check your ID.

这个提示本来是应该在视频ID长度合适但找不到视频时才出现的。

在我添加异常处理之前,机器人直接就断开连接了。在命令行里显示:

Error 'dict' object has no attribute 'load'

我试着在网上搜索,但没有找到解决办法。我用的是Windows,所以Unix的那些技巧不适用(如果有的话,我想说一下)。

我知道这可能是个比较局部的问题,但我还是需要帮助。

1 个回答

11

你把 json.load 的结果存储在一个叫 json 的变量里,这样就把模块 json 的名字给覆盖掉了。这很可能不是你想要的结果。建议你换个名字。

撰写回答