0

我有以下代码:

def coming_episode ( show ):
    try:
        show = api.search ( show , 'en' ) [ 0 ]
    except:
        print "a"
        return

    announced = [ 'show title' ]

    for e in show [ len ( show ) -1 ]:
            if e.FirstAired != '' and time.time () < time.mktime ( e.FirstAired.timetuple () ):
                    announced.append ( [ e.EpisodeName , e.id , time.mktime ( e.FirstAired.timetuple () ) ] )
    return announced

当我寻找 TVDB api 中存在的节目时,这很好用。但是,当我输入一些愚蠢的东西时,我也想捕获异常,例如“awdawd”作为表演。

我试过了except:except TVDBIndexError:但仍然给我以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "init.py", line 27, in <module>
    series                  = coming_episode ( series )
  File "init.py", line 19, in coming_episode
    for e in show [ len ( show ) -1 ]:
  File "/Users/Sites/Python/_envs/Series/lib/python2.7/site-packages/pytvdbapi/api.py", line 340, in __getitem__
    raise error.TVDBIndexError("Season {0} not found".format(item))
pytvdbapi.error.TVDBIndexError: (u'Season 0 not found', (), {})

我在这里做错了什么?

提前致谢 ;)

4

2 回答 2

4

我猜你使用pytvdbapi,所以我从这里获取了所有信息。

当你使用

for e in show [ len ( show ) -1 ]

您遍历节目季的每一集。

当一个节目有 3 个赛季时,您会遍历 ( len(show) == 3, 3 - 1 == 2) 第 2 个赛季。

如果一个节目只有一个季节,那么您尝试迭代的季节是len(show) == 1=> 1 - 1 = 0=> 0,但是没有 season 0,只有一个 season 1,因此会引发错误。(我不确定,但也许如果没有找到一个节目,仍然有一个Show带有空实例的Season实例)。

您可能想使用:

for s in show:      # for each season in show
    for e in s:     # for each episode in season
        if e.FirstAired != '' and time.time (...
于 2013-10-17T13:22:00.663 回答
0

没关系...它突然起作用了。将刚才的代码复制粘贴到不同的机器上,它可以工作。奇怪的东西...

于 2013-10-17T13:57:26.020 回答