我有一个函数,它在一些文本上尝试正则表达式列表,看看是否匹配。
@timeout(1)
def get_description(data, old):
description = None
if old:
for rx in rxs:
try:
matched = re.search(rx, data, re.S|re.M)
if matched is not None:
try:
description = matched.groups(1)
if description:
return description
else:
continue
except TimeoutError as why:
print(why)
continue
else:
continue
except Exception as why:
print(why)
pass
我在一个循环中使用这个函数并运行一堆文本文件。在一个文件中,执行不断停止:
Traceback (most recent call last):
File "extract.py", line 223, in <module>
scrape()
File "extract.py", line 40, in scrape
metadata = get_metadata(f)
File "extract.py", line 186, in get_metadata
description = get_description(text, True)
File "extract.py", line 64, in get_description
matched = re.search(rx, data, re.S|re.M)
File "C:\Users\Joseph\AppData\Local\Programs\Python\Python36\lib\re.py", line 182, in search
return _compile(pattern, flags).search(string)
KeyboardInterrupt
matched = re.search(rx, data, re.S|re.M)
. 对于许多其他文件,如果找不到匹配项,则转到下一个正则表达式。对于这个文件,它什么也不做,也不抛出异常。你知道是什么原因造成的吗?
编辑:
我现在正在尝试检测超时错误(这对我来说比更改rx更有效)
TimeoutError,借用自
this question
,被触发,但不会导致脚本继续运行。它只写下“计时器过期”并保持冻结状态。