我怎样才能检查一个参数是否是Python模块呢?没有模块或包这样的类型。
>>> os
<module 'os' from '/usr/lib/python2.6/os.pyc'>
>>> isinstance(os, module)
Traceback (most recent call last):
File "/usr/lib/gedit-2/plugins/pythonconsole/console.py", line 290, in __run
r = eval(command, self.namespace, self.namespace)
File "<string>", line 1, in <module>
NameError: name 'module' is not defined
我可以这样做:
>>> type(os)
<type 'module'>
但是我该拿它和什么相比呢?
我做了一个简单的模块来快速查找模块中的方法并获取它们的帮助文本,我为我的方法提供了一个模块变量和一个字符串:
def gethelp(module, sstring):
# here i need to check if module is a module.
for func in listseek(dir(module), sstring):
help(module.__dict__[func])
当然,即使module ='abc',这也会起作用:那么dir('abc ')会给我字符串对象的方法列表,但我不需要它。
7条答案
按热度按时间zsbz8rwp1#
qlvxas9a2#
72qzrwbm3#
这看起来有点古怪,但是:
1wnzp6jl4#
“格雷格·休吉尔”和“伦纳特·雷格布罗”的混合回答:
disbfnqx5#
将模块扁平化为字符串,并检查它是否以
'<module '
开头缺点是这可能与以文本
'<module'
开头的python字符串冲突,您可以尝试使用正则表达式对其进行更强的分类。wydwbb8l6#
有两种方法无法导入任何模块:
type(os) is type(__builtins__)
str(type(os)).find('module')>-1
kulphzqa7#
另一种不用导入任何东西的方法是将其设为字符串并直接与输出进行比较: