如何获取已导入的 Python 模块的所有子模块的名称/列表?(不是外部导入的模块/包,只是与模块子文件夹位于同一文件夹中的那个)。
我在用
import inspect
print([o[0] for o in inspect.getmembers(module_imported) if inspect.ismodule(o[1])])
Run Code Online (Sandbox Code Playgroud)
但这也会打印导入的系统模块和主模块文件夹中的文件。
Gra*_*Dot 11
使用pkgutil,尽管它并不总是与 pyinstaller 一起使用。
pkgutil.iter_modules(imported_module.__path__))
Run Code Online (Sandbox Code Playgroud)
zal*_*lun 11
您可以使用predicate该方法的参数getmembers。它的作用类似于过滤器。在这种情况下,它将是:
inspect.getmembers(module_imported, inspect.ismodule)
Run Code Online (Sandbox Code Playgroud)
这是GraphicalDot 答案的可复制粘贴版本。
只需更改my_imported_module为您要检查的模块即可。
from pkgutil import iter_modules
def list_submodules(module):
for submodule in iter_modules(module.__path__):
print(submodule.name)
list_submodules(my_imported_module)
Run Code Online (Sandbox Code Playgroud)
如何dir在模块上使用来获取列出的所有子模块或属性?
In [1]: import requests
In [2]: dir(requests)
Out[2]:
['ConnectTimeout',
'ConnectionError',
'DependencyWarning',
'FileModeWarning',
'HTTPError',
'NullHandler',
'PreparedRequest',
'ReadTimeout',
'Request',
'RequestException',
'Response',
'Session',
'Timeout',
'TooManyRedirects',
'URLRequired',
'__author__',
'__build__',
'__builtins__',
'__cached__',
'__copyright__',
'__doc__',
'__file__',
'__license__',
'__loader__',
'__name__',
'__package__',
'__path__',
'__spec__',
'__title__',
'__version__',
'adapters',
'api',
'auth',
'certs',
'codes',
'compat',
'cookies',
'delete',
'exceptions',
'get',
'head',
'hooks',
'logging',
'models',
'options',
'packages',
'patch',
'post',
'put',
'request',
'session',
'sessions',
'status_codes',
'structures',
'utils',
'warnings']
Run Code Online (Sandbox Code Playgroud)