【发布时间】:2020-07-25 08:43:18
【问题描述】:
有时会发生错误,但我没有注意到,因为我可能同时运行多个单元格。
我想让错误播放声音。
许多人希望长时间运行的单元格在完成后播放声音。
【问题讨论】:
标签: python jupyter-notebook google-colaboratory
有时会发生错误,但我没有注意到,因为我可能同时运行多个单元格。
我想让错误播放声音。
许多人希望长时间运行的单元格在完成后播放声音。
【问题讨论】:
标签: python jupyter-notebook google-colaboratory
a) 创建一个在错误时发出哔哔声的全局异常处理程序
b) 创建一个简单的函数,放置在长时间运行的单元格的末尾(链接上的一些其他方法)
您可以将声音更改为您喜欢的任何内容。
注意:异常处理程序和 beep_completed() 内部的声音非常不同,并且是有原因的。第一个简短且不烦人,第二个冗长且令人愉快(如果您远离计算机,因此您可以清楚地听到任务已完成)。在任何情况下,您都可以替换它们。
注意:有一条线仅适用于 Colab。如果您可以为 Jupyter 提供一个,我很乐意更新答案。
# This line is specific for Colab (please provide alternative for Jupyter)
from google.colab import output
from IPython.core.ultratb import AutoFormattedTB
# Catch any Exception, play error sound and re-raise the Exception
#-------------------------------------------------
# initialize the formatter for making the tracebacks into strings
itb = AutoFormattedTB(mode = 'Plain', tb_offset = 1)
# this function will be called on exceptions in any cell
def custom_exc(shell, etype, evalue, tb, tb_offset=None):
# still show the error within the notebook, don't just swallow it
shell.showtraceback((etype, evalue, tb), tb_offset=tb_offset)
# Play an audio beep. Any audio URL will do.
output.eval_js('new Audio("http://soundbible.com/grab.php?id=419&type=wav").play()')
# # grab the traceback and make it into a list of strings
# stb = itb.structured_traceback(etype, evalue, tb)
# sstb = itb.stb2text(stb)
# print (sstb) # <--- this is the variable with the traceback string
# print ("sending mail")
# send_mail_to_myself(sstb)
# this registers a custom exception handler for the whole current notebook
get_ipython().set_custom_exc((Exception,), custom_exc)
#------------------------------------------
# Function to play a sound (to put at the end of a long job)
def beep_completed():
#url_sound="http://soundbible.com/grab.php?id=1795&type=mp3";
output.eval_js('new Audio("http://soundbible.com/grab.php?id=1795&type=mp3").play()')
# Just play it with
beep_completed()
【讨论】: