python - 使用引发异常的 lambda 过滤列表

标签 python exception filter

使用 psutil 我得到一个进程列表;我想过滤掉具有特定名称的那些。

filter(lambda p: p.name()=="x", psutil.process_iter())

但是,psutil.Process.name() 函数可能会抛出...在这种情况下,filter 受到打击,并向我重新引发异常。

是否有 filter_noexception 类型的函数/惯用语,或者我是否需要自己将 p.name() 包装到异常吞噬函数中?

最佳答案

你可以这样做:

def try_get_name(process_instance):
    try:
        return process_instance.name()
    except:
        return ""


filter(lambda p: try_get_name(p)=="x", psutil.process_iter())

关于python - 使用引发异常的 lambda 过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24912150/

相关文章:

objective-c - 如何在 NSOperationQueues 上自动安装 NSExceptionHandlers?

java - 我的程序中出现 IllegalStateException?

python - Django 查询集按 ISO 周数过滤

python - Django DateTimeField auto_now_add 不工作

python - 异步版本比非异步版本运行慢

python - Django 中的 ModelForms 与 ManyToMany 关系模型

c# - 为什么 SerializationInfo 没有 TryGetValue 方法?

python - 如何将嵌套字典转换为数据框?

在 html 元素中过滤文本的 JavaScript 问题

javascript - 过滤 View 时需要 ng-repeat 过滤器来忽略任何超链接字符串值