注意我稍稍更改了q,以使其不再重复。 抱歉。
我正在运行这些耗时的生物信息学脚本。 我希望他们完成后听到提示音。
我在OS X上。
在类似的线程中,我发现print '\a'可能有效,但是在空闲状态下,它只会打印[]
为什么这在IDLE中不起作用
如何从Mac上的Python播放WAV或MP3音频文件触发?
@TheZ:我认为使用PyGame或什至弹出afplay对于寻找系统提示音的人来说可能是过大的。
@TheZ感谢您的链接,但是如果可以避免的话,我想避免播放声音文件。
@abarnert我离开了" Id最好是比OS X标准稍长一些,更具攻击性的哔哔声"部分,这听起来像是需要外部声音。
这个问题的可能重复:stackoverflow.com/questions/13941/python-sound-bell。第二个问题有用吗?
@TheUnfunCat不用担心,如果没有其他解决方法,至少您会有一个后备:)
@aychedee我认为你是对的。抱歉。我确实确实尝试过搜索。
@aychedee:第一个答案与OP最初尝试的答案相同;第二个与我的答案相同;第三个是Carbon等效项(它将在32位中执行与NSBeep相同的功能,而在64位中则完全不执行任何操作);第四是@TheZs建议。因此,那里没有新内容。但是我不确定这是否是该问题的解决方案,还是OP的真正问题是"为什么\a解决方案不能在空闲状态下工作"?
更改了我的q,以便希望能得到一些好处。
谢谢,您使我的回答看起来更好了;现在,它可以直接回答新问题,然后提供替代方法,而不是笨拙地先切线然后再回答原始问题。如果我能故意写那种话。 :)
它不发出蜂鸣声的原因是\a(或^G)是终端铃声。由程序处理标准输出将其转换为声音。 Terminal.app将播放声音(除非您将其配置为执行"可视铃声",而不是将其完全关闭),但是Idle不会。而且,当然,如果您没有tty来运行,您将一无所获。
如果您不介意使用PyObjC(它在所有最新版本的OS X上与Apple安装的Python一起预装):
import Cocoa
Cocoa.NSBeep()
当然,这会播放OS X系统的提示音,而不是终端铃声。除了可能会发出不同的声音之外,这意味着如果您在终端中禁用铃声,您的脚本仍会发出哔声。 (如果您确实想要终端机铃声,则可以始终通过例如ScriptingBridge编写终端机脚本。但我认为您不在乎。)
赞赏,紫外线,但我想避免导入模块
您有一个无需导入任何模块即可运行的生物信息学脚本吗? 没有math,itertools甚至sys吗? 无论如何,__builtins__名称空间中没有任何功能会发出蜂鸣声,因此,在有此限制的情况下,终端铃是您唯一的选择,这意味着您必须在Terminal.app中运行并使铃保持启用状态。
这个使用afplay的Python小片段可以满足我的需求:程序结尾处有十个响亮的叮当声:
from os import system
for i in range(0,10):
system('afplay /System/Library/Sounds/Glass.aiff')
我认为导入系统的开销不小,但是对我有用