Lire un fichier mp3 en utilisant python
J'ai ce code appelé CountDown Program. Ce que fait mon programme est:
Compte à rebours à partir de 60.
Jouez un fichier son (
alarm.wav) lorsque le compte à rebours atteint zéro. Cela signifie que le code doit effectuer les opérations suivantes:Faites une pause d'une seconde entre l'affichage de chaque numéro dans le compte à rebours en appelant
time.sleep().Appelez
subprocess.Popen()pour ouvrir le fichier audio avec l'application par défaut.
Voici le code pour cela:
import time , subprocess,os
from subprocess import call
def countDown():
for i in range (10):
print(i, end='')
time.sleep(1)
countDown()
subprocess.call([ 'bomb.mp3'])
Quand je lance ceci, j'obtiens:
Error: File not Found
J'ai essayé avec:
subprocess.call([ 'home/username/bomb.mp3']) # location specified
Mais j'ai:
Error: Permission denied
Ensuite, j'ai essayé avec Popen:
subprocess.Popen(['start', 'bomb.mp3'], shell=True)
Mais j'ai:
Error: 0123456789bomb.mp3: 1: start: not found
Je ne sais pas trop pourquoi ce code ne fonctionne pas sous Ubuntu, car il fonctionne bien sous Windows.
Que puis-je faire pour cela? Existe-t-il une méthode pour ouvrir des fichiers mp3 en utilisant Python sur Ubuntu 20.04 LTS ou est-ce que je manque un argument?
Merci d'avance.
Réponses
Utilisation:
subprocess.call(['xdg-open', '/home/username/bomb.mp3'])
bomb.mp3(ou alarm.wav) n'est pas un programme ou un script que vous souhaitez exécuter, mais un fichier que vous souhaitez ouvrir. Comme votre objectif semble être de l'ouvrir dans n'importe quelle application graphique actuellement enregistrée pour la gérer - ce que faisait au moins une des versions antérieures de votre script lorsqu'elle était exécutée sous Windows - vous devez utiliser la xdg-opencommande.
En plus de l'utilisation xdg-open, j'ai également ajouté un /début au début du chemin, sans lequel il est résolu par rapport au répertoire actuel (ce qui échouerait probablement sauf lorsque le répertoire actuel est /).
La première version de votre programme, ou quelque chose de similaire, peut avoir fonctionné sous Windows car, sous Windows, les fichiers non exécutables peuvent être exécutés en tant que commandes. Cela les amène à être ouverts avec le programme auquel leur type de fichier est associé. La plupart des systèmes d'exploitation et la plupart des shells ne se comportent pas de cette façon. Windows fournit également une commande pour ce faire (avec une sémantique légèrement différente) appelée start. Mais d'autres systèmes d'exploitation, tels que Ubuntu, n'en ont pas start. Donc, lorsque vous avez essayé cela sur Ubuntu, cela n'a pas fonctionné non plus.
Qu'est-ce qu'Ubuntu a xdg-open. Ubuntu n'est pas seul ici - xdg-openne fonctionne pas sous Windows ou macOS, mais il fonctionne sur les systèmes avec des environnements de bureau graphiques qui suivent les normes freedesktop.org . Cela inclut à peu près n'importe quel système GNU / Linux (et certains autres systèmes d'exploitation de type Unix) si l'utilisateur a un environnement de bureau graphique installé .
Pour que la xdg-opencommande réussisse réellement , l'utilisateur doit être connecté à une session graphique.
(Sur macOS, vous utiliseriez open.)