Python docstring搜索 - 类似于MATLAB`lookup`或Linux`apropos`

时间:2012-05-18 06:07:16

标签: python

有没有办法从解释器执行模块和函数docstrings 的关键字搜索?

通常,当我想用​​Python做一些事情时,我知道有一个模块可以做我想要的,但我不知道它叫什么。我想要一种搜索​​“执行X的函数或模块的名称”的方法,而不必使用Google “python do X”

以“我如何打开网址”为例?在Linux shell中,我可能会尝试>> apropos open url。在MATLAB下,我可能会尝试>> lookup open url。这两个都会给我列出在其手册页或doc字符串中包含“open”和“URL”字样的函数或模块。例如:

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

我想搜索所有已安装模块的内容,而不仅仅是import进入当前会话的模块。

是的,Google是搜索Python文档字符串的好方法,但延迟有点高。 ;)

2 个答案:

答案 0 :(得分:7)

内置支持来自pydoc.apropos

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

正如您所看到的,几乎没用。无论何时无法导入模块,它也会停止工作,这可能意味着“始终”,具体取决于您的包管理风格。

我没有使用但看起来很有希望的替代方案是apropos.py

  

Python的深刻,肮脏和详尽的'apropos'。抓住所有人   system.path中的库,并匹配all的查询字符串   模块名称,以及类,函数和方法名称   顶级模块的文档字符串。

     

用法:./ apropos.py

     

这个模块是由于PyDoc的apropos方法的限制而创建的,   当其中一个顶级模块无法导入时,它会失败。   原生apropos方法也不会抓取文档字符串或深层   模块名称,这个模块。

答案 1 :(得分:1)

使用以下命令:

pydoc -k