web-dev-qa-db-fra.com

Alarme sonore à la fin du code

Je suis dans une situation où mon code prend énormément de temps à exécuter et je ne veux pas le regarder tout le temps, mais je veux savoir quand il sera terminé.

Comment puis-je faire en sorte que le code (Python) sonne comme une "alarme" quand c'est fait? J'envisageais de lui faire jouer un fichier .wav quand il atteindrait la fin du code ...

Est-ce même une idée réalisable? Si oui, comment pourrais-je le faire?

113
mtigger

Sur Windows

import winsound
duration = 1000  # milliseconds
freq = 440  # Hz
winsound.Beep(freq, duration)

Où fréq est la fréquence en Hz et la durée est en millisecondes.

Sous Linux et Mac

import os
duration = 1  # seconds
freq = 440  # Hz
os.system('play -nq -t alsa synth {} sine {}'.format(duration, freq))

Pour utiliser cet exemple, vous devez installer sox.

Sur Debian/Ubuntu/Linux Mint, exécutez ceci sur votre terminal:

Sudo apt install sox

Sur Mac, lancez ceci dans votre terminal (en utilisant macports):

Sudo port install sox

Discours sur Mac

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 speech-dispatcher paquet dans Ubuntu (ou le paquet correspondant sur d’autres distributions):

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

joue le son de la cloche

26
Josh Allemon

Celui-ci semble fonctionner sous Windows et Linux * ( de cette question ):

def beep():
    print "\a"
beep()

Dans Windows, peut mettre à la fin:

import winsound
winsound.Beep(500,1000)

where 500 is the frequency in Herz
      1000 is the duration in miliseconds

*: pour fonctionner sous Linux, vous devrez peut-être effectuer les opérations suivantes (à partir du commentaire de QO):

  • dans un terminal, tapez 'cd /etc/modprobe.d' puis 'gksudo gedit blacklist.conf'
  • commentez la ligne qui dit 'blacklist pcspkr', puis redémarrez
  • vérifiez également que le "Terminal Bell" est coché dans les préférences du terminal.
23

le répartiteur de parole Ubuntu peut être utilisé:

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

La réponse de Kuchi n'a pas fonctionné pour moi sous OS X Yosemite (10.10.1). J'ai trouvé la commande afplay ( ici ), que vous pouvez simplement appeler depuis Python. Cela fonctionne que la cloche audible du terminal soit activée ou non et sans une bibliothèque tierce.

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

Je suppose que vous voulez la sonnerie standard du système et que vous ne voulez pas vous préoccuper des fréquences, des durées, etc., vous voulez simplement la sonnerie standard des fenêtres.

import winsound
winsound.MessageBeep()
7
poulter7

Voir: Son Python ("Bell")
Cela m'a aidé quand je voulais faire la même chose.
Tous les crédits vont à gbc

Citation:

As-tu essayé :

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

Cela fonctionne pour moi ici sur Mac OS 10.5

En fait, je pense que votre tentative initiale fonctionne aussi avec une petite modification:

print('\a')

(Vous avez juste besoin de guillemets simples autour de la séquence de caractères).

6
Kuchi

Cela 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')
4
Satyendra Yadav

Pourquoi utiliser python du tout? Vous pourriez oublier de le supprimer et de l’archiver dans un référentiel. Il suffit d’exécuter votre commande python avec && et une autre commande à exécuter faire 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
}
3
rtaft
import subprocess

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