我有一个 python 脚本,可以从电子表格中提取单元格值并将其输入到程序中。问题是,如果输入信息时发生错误(重复值、导航错误、sql 错误等),脚本将无法识别存在错误并继续运行。我想找到一种方法让脚本识别这些错误何时发生并保留脚本或采取其他操作。
所有错误彼此之间有所不同,但它们都会产生一个提示窗口,指定错误代码、描述,并且在出现错误时在 C:\Windows\media 中播放默认的“Windows Background.wav”声音。在所有可能的错误中唯一保持一致的是声音,所以我想我可以让 Python 将该声音存储为变量并不断检查它是否已被触发。
我看到了像pyaudio、audioread和winsound这样的模块,但它们似乎都没有办法读取wav文件,将其存储为变量,然后监视音量混合器上系统声音的输出以检查它。希望有一个解决方案,或者可能有另一种方法来检查与脚本交互的程序可能发生的任何错误。
编辑1
如果您确实需要播放本机 Windows 声音,您可以使用
winsound
模块。
有关模块和可用铃声的更多详细信息,请参见此处。
安装
winsound
为:
pip install winsound.
然后,当您从电子表格中读取数据时,请执行 try- except 块。
与下面的示例相同
winsound
import winsound
try:
data = int(raw_input("Enter a number:" ))
except ValueError:
print "Data type mismatch"
winsound.PlaySound("*", winsound.SND_ALIAS)
编辑
您可能希望尝试包装从电子表格中读取的数据,但块除外,并且在出现错误时(基于您期望的数据类型),您可以使用
pydub
来播放音频。
您也可以使用其他模块,但在
pydub
中播放音频只是其中之一。安装 pydub 为:
pip install pydub
这是一个小实验,当输入值不是整数时播放音频(嘟嘟声)。
from pydub import AudioSegment
from pydub.playback import play
audio_file = "alert.wav"
sound = AudioSegment.from_wav(audio_file)
try:
data = int(raw_input("Enter a number:" ))
except ValueError:
print "Data type mismatch"
play(sound)
如果输入整数以外的任何内容,这将播放“alert.wav”(基本上是一个 10k sine_wave(蜂鸣声)文件)。
输出
>>>
Enter a number:5
>>> ================================ RESTART ================================
>>>
Enter a number:number
Data type mismatch
>>>