5

注意我稍微改变了 q 使其不再重复。对不起。

我正在运行这些耗时的生物信息学脚本。我希望他们在完成后发出哔哔声。

我在 OS X 上。

在一个类似的线程中,我发现这print '\a'可能有效,但在空闲时,这只是打印[]

为什么这在 IDLE 中不起作用

4

2 回答 2

4

它不发出哔哔声的原因是\a(或^G)是终端铃声代码;由处理标准输出的程序决定将其转换为声音。Terminal.app 将播放声音(除非您将其配置为“视觉铃声”,而不是完全关闭它),但 Idle 不会。而且,当然,如果您在没有 tty 的情况下运行,您将一无所获。

如果您不介意使用 PyObjC(在所有最新版本的 OS X 上都预装了 Apple 安装的 Python):

import Cocoa
Cocoa.NSBeep()

当然,这会播放 OS X 系统提示音,而不是终端铃声。除了可能是不同的声音之外,这意味着如果您禁用终端中的铃声,您的脚本仍然会发出哔哔声。(如果你真的想要一个终端铃声,你总是可以通过例如 ScriptingBridge 编写终端脚本。但我认为你不在乎。)

于 2012-11-09T18:01:56.903 回答
2

这个使用 afplay 的小 Python 片段可以满足我的需要:在程序结束时发出十声响亮的叮当声:

from os import system
for i in range(0,10):
    system('afplay /System/Library/Sounds/Glass.aiff')

我认为导入系统的开销不小,但它对我有用

于 2013-04-27T02:52:13.007 回答