在Python中检查模块而不使用异常
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Python中检查模块而不使用异常,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1230字,纯文字阅读大概需要2分钟。
内容图文
![在Python中检查模块而不使用异常](/upload/InfoBanner/zyjiaocheng/741/d397722d5ac9475db1aff13af012a115.jpg)
我可以在Python中检查一个模块,例如:
try:
import some_module
except ImportError:
print "No some_module!"
但我不想使用try / except.有没有办法实现这个目标? (它应该适用于Python 2.5.x.)
注意:不使用try / except的原因是任意的,这只是因为我想知道是否有办法在不使用异常的情况下测试它.
解决方法:
执行请求需要诡计(并且一个raise语句实际上是不可避免的,因为它是PEP 302中指定的唯一方式,导入钩子说“我不处理此路径项”!),但是以下将避免任何尝试/除外:
import sys
sentinel = object()
class FakeLoader(object):
def find_module(self, fullname, path=None):
return self
def load_module(*_):
return sentinel
def fakeHook(apath):
if apath == 'GIVINGUP!!!':
return FakeLoader()
raise ImportError
sys.path.append('GIVINGUP!!!')
sys.path_hooks.append(fakeHook)
def isModuleOK(modulename):
result = __import__(modulename)
return result is not sentinel
print 'sys', isModuleOK('sys')
print 'Cookie', isModuleOK('Cookie')
print 'nonexistent', isModuleOK('nonexistent')
这打印:
sys True
Cookie True
nonexistent False
当然,这些在现实生活中为了避免完全正常的尝试/除外的无意义目的是荒谬的长度,但它们似乎满足了所提出的要求(并且可以有希望提示Python-Wizards想要开始他们自己的研究 – 确切地了解所有这些代码如何以及为什么按要求工作实际上是有益的,这就是为什么一旦我没有提供详细的解释和URL ;-).
内容总结
以上是互联网集市为您收集整理的在Python中检查模块而不使用异常全部内容,希望文章能够帮你解决在Python中检查模块而不使用异常所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。