Überprüfen Sie, ob ein parameter ist ein Python-Modul?
Wie kann ich (pythonically) überprüfen Sie, ob ein parameter ist ein Python-Modul? Es gibt keine Art, wie Modul oder Paket.
>>> 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
Kann ich dies tun:
>>> type(os)
<type 'module'>
Aber was soll ich es vergleichen? 🙁
Ich habe ein einfaches Modul, um schnell zu finden, Methoden, Module und Holen Sie Hilfe-Texte für Sie. Ich liefere ein Modul var und einen string an meine Methode:
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])
Natürlich, dies funktioniert auch, wenn Modul = 'abc': dann dir('abc') wird mir die Liste der Methoden für das string-Objekt, aber ich brauchen das nicht.
- Sie sind bewusst die help () - Methode und pydoc und ähnliche Bemühungen, richtig?
- pydoc ist ein bisschen anders. Ich brauchte eine einfache Möglichkeit, eine Methode zu finden, ohne zu wissen, den genauen Namen. Zum Beispiel, etwas, dass 'Größe' in os.Pfad.
- Kannst du nicht die Ente Geben ein Modul? Was braucht man es? Nur versuchen Sie, und fangen Sie die exception aus, wenn es fehlschlägt.
- Gut, Google docs und helfen ist eine Art von Selbstbeobachtung, also in diesem Fall scheint es okay.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser scheint etwas hacky, aber:
types
, gefunden:ModuleType = type(sys)
🙂Einer Mischung von @Greg Hewgill und @Lennart Regebro Antworten:
Reduzieren Sie das Modul in einen string und prüfen, ob es beginnt mit
'<module '
Nachteil dieser prallen mit einem python-string beginnt mit dem text
'<module'
könnten Sie versuchen, es zu klassifizieren stärker mit einem regex.