198

我的代码需要很长时间才能运行,我不想一直盯着它看,但想知道它什么时候完成。

完成后,如何使(Python)代码听起来像是“警报”?我正在考虑让它在到达代码末尾时播放 .wav 文件......

这甚至是一个可行的想法吗?如果是这样,我该怎么做?

4

12 回答 12

313

在 Windows 上

import winsound
duration = 1000  # milliseconds
freq = 440  # Hz
winsound.Beep(freq, duration)

其中 freq 是以 Hz 为单位的频率,持续时间以毫秒为单位。

在 Linux 和 Mac 上

import os
duration = 1  # seconds
freq = 440  # Hz
os.system('play -nq -t alsa synth {} sine {}'.format(duration, freq))

要使用此示例,您必须安装sox.

在 Debian / Ubuntu / Linux Mint 上,在终端中运行:

sudo apt install sox

在 Mac 上,在终端中运行它(使用 macports):

sudo port install sox

Mac 上的语音

import os
os.system('say "your program has finished"')

Linux 上的演讲

import os
os.system('spd-say "your program has finished"')

您需要speech-dispatcher在 Ubuntu 中安装该软件包(或其他发行版上的相应软件包):

sudo apt install speech-dispatcher
于 2013-05-15T19:23:23.917 回答
41
print('\007')

在 Linux 上播放铃声。在 Windows 10 上播放错误声音。

于 2015-05-13T16:32:36.790 回答
38

这似乎适用于 Windows 和 Linux*(来自这个问题):

def beep():
    print("\a")

beep()

在 Windows 中,可以放在最后:

import winsound
winsound.Beep(500, 1000)

where 500 is the frequency in Herz
      1000 is the duration in miliseconds

要在 Linux 上工作,您可能需要执行以下操作(来自 QO 的评论):

  • 在终端中,输入“cd /etc/modprobe.d”,然后输入“gksudo gedit blacklist.conf”
  • 评论说“黑名单 pcspkr”的行,然后重新启动
  • 还要检查终端首选项是否选中了“终端铃”。
于 2013-05-15T19:13:16.557 回答
17

ubuntu 语音调度器可用于:

import subprocess
subprocess.call(['speech-dispatcher'])        #start speech dispatcher
subprocess.call(['spd-say', '"your process has finished"'])
于 2015-04-12T14:42:46.817 回答
15

我假设您想要标准的系统铃声,并且不想关心频率和持续时间等,您只想要标准的 Windows 铃声。

import winsound
winsound.MessageBeep()
于 2017-04-04T21:42:22.917 回答
11

Kuchi 的回答在 OS X Yosemite (10.10.1) 上对我不起作用。我确实找到了afplay命令(here),您可以从 Python 中调用它。无论是否启用了终端响铃并且没有第三方库,这都有效。

import os
os.system('afplay /System/Library/Sounds/Sosumi.aiff')
于 2015-02-20T18:05:49.157 回答
9

为什么要使用 python?您可能会忘记将其删除并将其签入存储库。只需使用 && 运行您的 python 命令,然后运行另一个命令来执行警报。

python myscript.py && 
    notify-send 'Alert' 'Your task is complete' && 
    paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga

或者将一个函数放到你的 .bashrc 中。我在这里使用 apython 但你可以覆盖 'python'

function apython() {
    /usr/bin/python $*
    notify-send 'Alert' "python $* is complete"
    paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
于 2016-09-28T16:53:12.507 回答
6

请参阅:Python Sound ("Bell")
当我想做同样的事情时,这对我很有帮助。
所有学分都归gbc

引用:

你有没有尝试过 :

import sys
sys.stdout.write('\a')
sys.stdout.flush()

这在 Mac OS 10.5 上对我有用

实际上,我认为您最初的尝试也可以稍作修改:

print('\a')

(您只需要字符序列周围的单引号)。

于 2013-05-15T19:17:16.163 回答
4

可以通过如下代码完成:

import time
time.sleep(10)   #Set the time
for x in range(60):  
    time.sleep(1)
    print('\a')
于 2017-06-30T20:02:05.023 回答
3

你的问题多一点。

我使用gTTS包从文本中生成音频,然后在学习网页抓取并创建 coursera 下载器(仅限免费课程)时使用Playsound播放该音频。

text2speech = gTTS("Your course " + course_name +
                                " is downloaded to " + downloads + ". Check it fast.")
text2speech.save("temp.mp3")
winsound.Beep(2500, 1000)
playsound("temp.mp3")
于 2020-09-18T20:58:20.367 回答
2
import subprocess

subprocess.call(['D:\greensoft\TTPlayer\TTPlayer.exe', "E:\stridevampaclip.mp3"])
于 2016-05-02T12:36:26.627 回答
2

我创建了一个 python 模块,用于在代码执行后提醒开发人员使用 Telegram 应用程序。这可能比发出警报声更有帮助。

Pypi 链接: https ://pypi.org/project/devreminder/

Github 链接: https ://github.com/cagataygulten/devreminder

例子:

In [1]>>
    from devreminder import DevReminder
    import time

In [2]>>
    remind = DevReminder(1932126911,False,0)

In [3]>>
    remind.me("Example")
    time.sleep(6)

输出:

提醒消息示例

请按照 README 文件获取更多信息。

于 2021-08-19T18:04:48.150 回答