为什么不打印(\ a)在IDLE中工作

时间:2012-11-09 17:58:36

标签: python macos beep beepbeep

注意我略微更改了q,因此不再重复了。遗憾。

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

我在OS X上。

similar thread我发现print '\a'可能会有效,但在空闲状态下,这只会打印[]

为什么这不适用于IDLE

2 个答案:

答案 0 :(得分:4)

它没有发出哔哔声的原因是\a(或^G)是终端铃声代码;由程序处理stdout将其转化为声音。 Terminal.app将播放声音(除非你将它配置为“视觉铃声”,而不是完全关闭它),但是空闲则不会。而且,当然,如果你在没有tty的情况下跑步,你什么也得不到。

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

import Cocoa
Cocoa.NSBeep()

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

答案 1 :(得分:2)

这个使用afplay的微小Python片段可以满足我的需求:在节目结束时播放十个响亮的声音:

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

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