【问题标题】:Skip iteration of function in map跳过地图中函数的迭代
【发布时间】:2020-06-30 14:50:32
【问题描述】:

我有一个函数matching,我通过map(lambda f: matching(f),files) 将它应用于许多文件。

函数中有一行,如果它引发错误,我希望它跳过该文件并继续下一个。比如:

try: 
    doc = nlp(text)
except:
    continue

除非了解continue 仅用于循环。有没有办法做到这一点?

【问题讨论】:

  • try 是否在循环中阻塞?如果它在循环内,你可以这样做。否则你不能。
  • 不,它不在循环内。
  • 你不能在没有循环的情况下使用 continue。
  • 我不想继续使用。我在说类似的话。

标签: python function exception


【解决方案1】:

试试:

try: 
    doc = nlp(text)
except:
    pass

您只能在循环中使用continue。你可以使用pass

【讨论】:

  • 这难道不会继续该文件的其余功能吗?
  • 你能提供更多关于你的代码的信息吗?目前尚不清楚您的代码在做什么
  • 对不起。 try-except 块只是函数的一部分。之后在doc 上完成了一些工作。但是在“except”块中,我想继续下一个文件。
【解决方案2】:

你可能想尝试这样的事情:

def myfunc(text):
    try:
        return True, nlp(text)
    except Exception:
        return False, None

output = (doc for success, doc in map(myfunc, files) if success)

请注意,您通常希望排除Exception,而不是使用裸except 以避免像SIGINT(键盘中断)一样捕获BaseException

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 2011-08-06
    • 2011-07-06
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    相关资源
    最近更新 更多