2012-05-18 10 views
5

¿Hay alguna manera de realizar la búsqueda por palabra clave del módulo y la función docstrings del intérprete?Python docstring search - similar a MATLAB `lookup` o Linux` apropos`

A menudo, cuando quiero hacer algo en Python, sé que hay un módulo que hace lo que quiero, pero no sé cómo se llama. Me gustaría una forma de buscar "el nombre de la función o módulo que hace X" sin tener que Google "python do X".

Tome el ejemplo de "¿cómo puedo abrir una URL"? En un shell de Linux, podría intentar >> apropos open url. Bajo MATLAB, podría intentar >> lookup open url. Ambos me darían listas de funciones o módulos que incluyen las palabras 'abrir' y 'URL' en algún lugar de su página de manual o cadena de documentación. Por ejemplo:

urllib.urlopen : Create a file-like object for the specified URL to read from. 
urllib2.urlopen : ... 
... 

me gustaría algo que busca a través de todos los módulos instalados, no sólo los módulos que han sido import ed en mi sesión actual.

Sí, Google es una gran manera de buscar cadenas de doc Python, pero la latencia es un poco alta. ;)

Respuesta

5

El soporte integrado para la que proviene de pydoc.apropos:

import pydoc 
pydoc.apropos('Zip') 
# output: zipimport - zipimport provides support for importing Python modules from Zip archives. 

Lo cual, como se puede ver, es casi inútil. También deja de funcionar cada vez que no se puede importar un módulo, lo que podría significar 'siempre' según el estilo de administración de su paquete.

Una alternativa que no he utilizado, pero parece prometedor es apropos.py:

profundo, sucio y exhaustiva 'propósito' para Python. Rastrea todas las bibliotecas en system.path, y hace coincidir una cadena de consulta con todos los nombres de módulo , así como los nombres de clase, función y método y las cadenas de documentos de los módulos de nivel superior.

Uso: ./apropos.py

Este módulo fue creado debido a los límites del método a propósito de PyDoc, que falle duro cuando uno de los módulos de nivel superior no se pueden importar. El método de apropos nativo tampoco rastrea las cadenas de documentos o los nombres profundos de los módulos , que este módulo hace.

0

utilizar el siguiente comando:

pydoc -k 
Cuestiones relacionadas