【问题标题】:how handle exception using IMDBPY如何使用 IMDBPY 处理异常
【发布时间】:2018-11-05 16:44:01
【问题描述】:

此代码与具有 plot 关键字的电影 ID 完美搭配。

from imdb import IMDb
ia = IMDb()
black_panther = ia.get_movie('1825683', info='keywords')
print(black_panther['keywords'])

bur 对于没有像这个 id(5950092) 这样的关键字的电影,它返回异常。处理异常有什么想法吗?

【问题讨论】:

    标签: python exception-handling information-retrieval imdb imdbpy


    【解决方案1】:

    由于imdb.Movie.Movieimdb.utils._Container 的子类,其get 方法类似于that of a dict,其文档字符串为:

    >>> imdb.utils._Container.get.__doc__
    "Return the given section, or default if it's not found."
    

    这意味着如果没有关键字,您可以这样做永远不会抛出异常:

    movie = ia.get_movie('5950092', info='keywords')
    
    movie.get('keywords', [])
    # Result: [], empty list
    

    如果您愿意,也可以使用Exception

    try:
        keywords = movie['keywords']
    except KeyError:
        keywords = []
    

    【讨论】:

    • 我对电影语言也有同样的问题。你能帮帮我吗。
    • movie = ia.get_movie('5950092', info='language') 不工作。
    • 因为'language' 不包含在电影信息集中,即尝试'language' in ia.get_movie_infoset()。应该是False
    【解决方案2】:

    在 IMDbPY 中,Movie 实例的行为类似于字典,因此您以通常的方式处理异常(使用 try/except 子句)。见https://docs.python.org/3/tutorial/errors.html#handling-exceptions

    作为类字典对象,您还可以使用'keywords' in black_panther 测试键是否存在,并在不引发 n 异常的情况下获取值,但如果键缺失则返回 None,使用 black_panther.get('keywords')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-16
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 2016-08-09
      • 2017-04-14
      • 1970-01-01
      相关资源
      最近更新 更多