我想导入一堆库并捕获异常。
如果我只有 1 个 try catch block ,我会得到 1 个异常(第一个)。是否有一种模式可以遍历所有库并为每个缺少的库设置一个单独的异常?
#!/usr/bin/env python
try: import sys
except: print sys.exc_info()
try: import numpy as np
except: print sys.exc_info()
try: import scipy as sp
except: print sys.exc_info()
try: import os as os
except: print sys.exc_info()
try: from operator import itemgetter
except: print sys.exc_info()
try: import socket
except: print sys.exc_info()
try: import logging
except: print sys.exc_info()
try: from time import gmtime, strftime
except: print sys.exc_info()
最佳答案
您可以使用 __import__
动态导入模块,除其他外,允许您通过使用模块名称迭代列表来导入模块。
例如:
libnames = ['numpy', 'scipy', 'operator']
for libname in libnames:
try:
lib = __import__(libname)
except:
print sys.exc_info()
else:
globals()[libname] = lib
您可以扩展它以处理 import ... as ...
和 from ... import ...
表单,或者稍后手动进行分配,即:
np = numpy
sp = scipy
itemgetter = operator.itemgetter
关于python - 导入 Python 库并在它们不可用时优雅地处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20226347/