1

Pythonでは、を発生さimport does_not_existImportError

import exists

exists.py

import does_not_exist

も発生しImportErrorます。

コードの違いをどのように見分ける必要がありますか?

4

2 に答える 2

3

私が知っている唯一の方法は、トップレベルのモジュール名が「存在する」かどうかを確認することです例外のメッセージにあるかどうか:

try:
  import exists
except ImportError as exc:
  if "exists" in str(exc):
     pass
  else:
     raise

これは Python の ImportError に対する機能要求でしょうか? モジュール名の変数を持つことは確かに便利です..

于 2009-12-07T14:43:14.213 に答える
2

トレースバックの tb_next を使用できます。別のモジュールで例外が発生した場合は None とは異なります

import sys
try:
    import exists
except Exception, e:
    print "None on exists", sys.exc_info()[2].tb_next == None

try:
    import notexists
except Exception, e:
    print "None on notexists", sys.exc_info()[2].tb_next == None

>>> None on exists False
>>> None on notexists True
于 2009-12-07T15:07:24.907 に答える