如何访问 Python 的 help('modules') 显示的模块列表?

Dav*_*gac 5 python python-module

如何访问 Python 显示的模块列表help('modules')?它显示以下内容:

>>> help('modules')

Please wait a moment while I gather a list of all available modules...

...[list of modules]...
MySQLdb             codeop              mailman_sf          spwd
OpenSSL             collections         markupbase          sqlite3
Queue               colorsys            marshal             sre
...[list of modules]...

Enter any module name to get more help.  Or, type "modules spam" to search
for modules whose descriptions contain the word "spam".

>>>
Run Code Online (Sandbox Code Playgroud)

我可以查看输出中的列表,但希望从 Python 程序中将其作为列表进行访问。我怎样才能做到这一点?

Rom*_*huk 4

你可以help自己模仿所有的动作。内置help用途pydoc,使用ModuleScanner类来获取有关所有可用库的信息 - 请参阅pydoc.py中的第 1873 行。

这是链接中代码的稍微修改版本:

>>> modules = []
>>> def callback(path, modname, desc, modules=modules):
    if modname and modname[-9:] == '.__init__':
        modname = modname[:-9] + ' (package)'
    if modname.find('.') < 0:
        modules.append(modname)

>>> def onerror(modname):
    callback(None, modname, None)

>>> from pydoc import ModuleScanner 
>>> ModuleScanner().run(callback, onerror=onerror)
>>> len(modules)
379
>>> modules[:10]
['__builtin__', '_ast', '_bisect', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw']
>>> len(modules)
379
Run Code Online (Sandbox Code Playgroud)