web-dev-qa-db-ja.com

コードが終了するとアラーム音が鳴ります

私は、コードの実行に非常に長い時間がかかる状況にあり、常にコードをじっと見たくはありませんが、いつコードが実行されたかを知りたいと思っています。

(Python)コードの種類の音を「アラーム」にするにはどうすればよいですか?コードの最後に達したときに.wavファイルを再生することを考えていました...

これも実現可能なアイデアですか?もしそうなら、どうすればいいですか?

113
mtigger

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"')

Ubuntuにspeech-dispatcherパッケージ(または他のディストリビューションの対応するパッケージ)をインストールする必要があります。

Sudo apt install speech-dispatcher
177
Ryan Saxe
 print('\007')

ベル音を鳴らします

26
Josh Allemon

これは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」と入力します
  • 「blacklist pcspkr」と書かれた行にコメントしてから、再起動します
  • また、端末の設定で[端末ベル]がオンになっていることも確認してください。
23

ubuntuスピーチディスパッチャーを使用できます。

import subprocess
subprocess.call(['speech-dispatcher'])        #start speech dispatcher
subprocess.call(['spd-say', '"your process has finished"'])
17
Ishan Khare

Kuchiの答え は、OS X Yosemite(10.10.1)では動作しませんでした。 Pythonから呼び出すことができるafplayコマンド( here )を見つけました。これは、ターミナルの可聴ベルが有効になっているかどうかに関係なく、サードパーティのライブラリがなくても機能します。

import os
os.system('afplay /System/Library/Sounds/Sosumi.aiff')
8
zekel

私はあなたが標準的なシステムベルが欲しいと思っており、周波数や持続時間などに関心を持ちたくない、あなたはただ標準的なウィンドウベルが欲しいだけだと思っています。

import winsound
winsound.MessageBeep()
7
poulter7

参照: Python Sound( "Bell")
これは、同じことをしたいときに役立ちました。
すべてのクレジットは gbc に移動します

見積もり:

やってみました :

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

Mac OS 10.5ではここでうまくいきます

実際、あなたの元の試みは少し修正しても機能すると思います:

print('\a')

(文字シーケンスを単一引用符で囲む必要があります)。

6
Kuchi

次のようにコードで実行できます。

import time
time.sleep(10)   #Set the time
for x in range(60):  
    time.sleep(1)
    print('\a')
4
Satyendra Yadav

なぜ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
}
3
rtaft
import subprocess

subprocess.call(['D:\greensoft\TTPlayer\TTPlayer.exe', "E:\stridevampaclip.mp3"])
2
Du Peng