为什么print(\ a)在IDLE中不起作用

The*_*Cat 5 python macos beep beepbeep

注意我稍稍更改了q,以使其不再重复。抱歉。

我正在运行这些耗时的生物信息学脚本。我希望他们完成后听到提示音。

我在OS X上。

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

为什么这在IDLE中不起作用

aba*_*ert 4

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

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

import Cocoa
Cocoa.NSBeep()
Run Code Online (Sandbox Code Playgroud)

当然,这会发出 OS X 系统蜂鸣声,而不是终端铃声。除了可能发出不同的声音之外,这意味着如果您在终端中禁用铃声,您的脚本仍然会发出蜂鸣声。(如果您确实想要终端铃声,您可以随时通过 ScriptingBridge 编写终端脚本。但我认为您不在乎。)

  • 您有一个无需导入任何模块即可运行的生物信息学脚本吗?没有“math”、“itertools”,甚至“sys”?无论如何,“__builtins__”命名空间中没有任何函数会发出蜂鸣声,因此考虑到该限制,终端铃声是您唯一的选择,这意味着您必须在“Terminal.app”中运行并启用铃声。 (2认同)