python - 我们如何获得一个忽略缺失库的迭代器,例如 `crypt`?
问题描述
如果我们使用 pip 安装stdlib_list
并执行以下命令,则会收到错误消息:
import importlib
import itertools as itts
from stdlib_list import stdlib_list
def get_modules():
module_names = iter(stdlib_list("3.7"))
libs = map(importlib.import_module, module_names)
builtins = dir(__builtins__)
return itts.chain(libs, builtins)
modules = get_modules()
for module in modules:
pass
错误信息:
ImportError: The crypt module is not supported on Windows
如何创建一个静默移动到下一个结果的迭代器?
解决方案
你可以赶上ImportError
:
def try_import_module(name):
try:
return importlib.import_module(name)
except ImportError:
return None
然后:
def get_modules():
module_names = stdlib_list("3.7")
libs = filter(None, map(try_import_module, module_names))
builtins = dir(__builtins__)
return itts.chain(libs, builtins)
推荐阅读
- laravel - 如何从 url 插入 id 到我的创建方法
- html - Html 和 CSS 在文本编辑器中链接,但未在 Web 浏览器中显示
- networking - GSLB 和 ADC(应用交付控制器)有什么区别
- c - 为什么 int 函数即使没有在 C 中首先声明也能工作
- swift - 覆盖 hitTest SwiftUi?
- python - 在 Python 3/Jupyter 上生成列表会杀死内核
- php - 使用 PHP 正则表达式的字符集中至少出现两次或多次
- ruby - R电子表格宝石
- php - nginx 在加载 php 文件时给出“发生错误”
- c# - 如何将 Windows.Security.Credentials.UI 命名空间包含到 C# 项目中