Alarme sonore à la fin du code
je suis dans une situation où mon code prend beaucoup de temps à courir et je ne veux pas être à regarder tout le temps, mais souhaitez savoir quand c'est fait.
Comment puis-je faire sonner le code (Python) comme une "alarme" quand c'est fait? J'ai envisagé de faire jouer une .fichier wav lorsqu'il atteint la fin du code...
est-ce une idée réalisable? Si oui, comment pourrais-je le faire?
10 réponses
Sous Windows
import winsound
duration = 1000 # millisecond
freq = 440 # Hz
winsound.Beep(freq, duration)
où freq est la fréquence en Hz et la durée est en millisecondes.
sur Linux (et Mac)
import os
duration = 1 # second
freq = 440 # Hz
os.system('play --no-show-progress --null --channels 1 synth %s sine %f' % (duration, freq))
pour utiliser cet exemple, vous devez installer sox
.
sur Debian / Ubuntu/LinuxMint vous devez exécuter dans votre terminal:
sudo apt install sox
Voici la façon macports de faire cela...exécutez ceci est votre terminal:
sudo port install sox
discours sur Mac
et quelque chose de vraiment cool si vous utilisez un mac dans le terminal, peut-être peut faire la même chose dans windows, mais je ne sais que pour mac, cela vous dira que c'est fait:
import os
os.system('say "your program has finished"')
discours sur Linux
import os
os.system('spd-say "your program has finished"')
vous devez installer le paquet speech-dispatcher
dans Ubuntu (ou le paquet correspondant sur d'autres distributions):
sudo apt install speech-dispatcher
celui-ci semble fonctionner à la fois sur Windows et Linux* ( à partir de cette question ):
def beep():
print "\a"
beep()
dans les fenêtres, peut mettre à la fin:
import winsound
winsound.Beep(500,1000)
where 500 is the frequency in Herz
1000 is the duration in miliseconds
*: pour travailler sur Linux, vous pouvez avoir besoin de faire ce qui suit (du commentaire de QO):
- dans un terminal, tapez 'cd /etc/modprobe.d' alors 'gksudo gedit liste noire.conf '
- commentaire la ligne qui dit "blacklist pcspkr', puis redémarrer
- vérifier également que les préférences de terminal a la 'cloche de Terminal' cochée.
ubuntu speech dispatcher peut être utilisé:
import subprocess
subprocess.call(['speech-dispatcher']) #start speech dispatcher
subprocess.call(['spd-say', '"your process has finished"'])
la réponse de Kuchi n'a pas fonctionné pour moi sur OS X Yosemite (10.10.1). J'ai trouvé une commande qui fonctionne , que vous pouvez simplement appeler depuis Python. Cela fonctionne indépendamment du fait que le Terminal sonore bell est activé ou non et sans bibliothèque tierce partie.
os.system('afplay /System/Library/Sounds/Sosumi.aiff')
Voir: Son Python ("Bell")
Cela m'a aidé quand je voulais faire la même chose.
Tous les crédits vont à gbc
citation:
avez-vous essayé:
import sys
sys.stdout.write('\a')
sys.stdout.flush()
qui fonctionne pour moi ici sur Mac OS 10.5
en fait, je pense que votre tentative originale fonctionne aussi avec une petite modification:
print('\a')
(vous avez juste besoin des guillemets simples autour de la séquence de caractères).
il peut être fait par code comme suit:
import time
time.sleep(10) #Set the time
for x in range(60):
time.sleep(1)
print('\a')
import subprocess
subprocess.call(['D:\greensoft\TTPlayer\TTPlayer.exe', "E:\stridevampaclip.mp3"])
Pourquoi utiliser python? Vous risquez d'oublier de l'enlever et de le vérifier dans un référentiel. Il suffit d'exécuter votre commande python avec && et une autre commande pour exécuter l'alerte.
python myscript.py &&
notify-send 'Alert' 'Your task is complete' &&
paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
ou déposez une fonction dans votre .bashrc. J'utilise apython ici mais vous pouvez remplacer 'python'
function apython() {
/usr/bin/python $*
notify-send 'Alert' "python $* is complete"
paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
je suppose que vous voulez la cloche du système standard, et que vous ne voulez pas vous préoccuper des fréquences et des durées, etc. tu veux juste la cloche standard de windows.
import winsound
winsound.MessageBeep()