我有以下代码:
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', (), {})
我在这里做错了什么?
提前致谢;)
答案 0 :(得分:4)
我猜你使用pytvdbapi,所以我从here获取了所有信息。
使用时
for e in show [ len ( show ) -1 ]
你遍历节目的单个季节的每一集。
当一个节目有3个季节时,你会在第2季迭代(len(show) == 3
,3 - 1 == 2
。
如果节目只有一个季节,那么您尝试迭代的季节是len(show) == 1
=&gt; 1 - 1 = 0
=&gt; 0
,但没有季节0
,只有一个季节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 (...
答案 1 :(得分:0)
没关系......它突然起作用了。复制粘贴代码现在在不同的机器上,它的工作原理。奇怪的东西......