Spielen Sie eine MP3-Datei mit Python ab

Oct 06 2020

Ich habe diesen Code namens CountDown Program. Was mein Programm macht, ist:

  1. Countdown von 60.

  2. Spielen Sie eine Sounddatei ( alarm.wav) ab, wenn der Countdown Null erreicht. Dies bedeutet, dass der Code Folgendes tun muss:

    • Machen Sie eine Pause zwischen der Anzeige jeder Nummer im Countdown, indem Sie anrufen time.sleep().

    • Rufen Sie subprocess.Popen()an, um die Audiodatei mit der Standardanwendung zu öffnen.

Hier ist der Code dafür:

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

Wenn ich das starte, bekomme ich:

Error: File not Found

Ich habe versucht mit:

subprocess.call([ 'home/username/bomb.mp3']) # location specified

Aber ich habe:

Error: Permission denied

Dann habe ich versucht mit Popen:

subprocess.Popen(['start', 'bomb.mp3'], shell=True)

Aber ich habe:

Error: 0123456789bomb.mp3: 1: start: not found

Ich bin mir nicht ganz sicher, warum dieser Code unter Ubuntu nicht funktioniert, da er unter Windows einwandfrei funktioniert.

Was kann ich dafür tun? Gibt es eine Methode zum Öffnen von MP3-Dateien mit Python unter Ubuntu 20.04 LTS oder fehlt mir ein Argument?

Danke im Voraus.

Antworten

3 EliahKagan Oct 07 2020 at 00:32

Verwenden:

subprocess.call(['xdg-open', '/home/username/bomb.mp3'])

bomb.mp3(oder alarm.wav) ist kein Programm oder Skript, das Sie ausführen möchten, sondern eine Datei, die Sie öffnen möchten. Da es Ihr Ziel zu sein scheint, es in der aktuell registrierten grafischen Anwendung zu öffnen, um es zu verarbeiten - was mindestens eine der früheren Versionen Ihres Skripts unter Windows getan hat -, sollten Sie den xdg-openBefehl verwenden.

Neben der Verwendung xdg-openhabe ich auch einen führenden /an der Vorderseite des Pfads hinzugefügt , ohne den er relativ zum aktuellen Verzeichnis aufgelöst wird (was vermutlich fehlschlagen würde, außer wenn das aktuelle Verzeichnis vorhanden ist /).


Die erste Version Ihres Programms oder eine ähnliche Version hat möglicherweise unter Windows funktioniert, da unter Windows nicht ausführbare Dateien als Befehle ausgeführt werden können. Dies führt dazu, dass sie mit jedem Programm geöffnet sind, dem ihr Dateityp zugeordnet ist. Die meisten Betriebssysteme und Shells verhalten sich nicht so. Windows bietet dazu auch einen Befehl (mit etwas anderer Semantik) an start. Andere Betriebssysteme wie Ubuntu haben dies jedoch nicht start. Als Sie das unter Ubuntu ausprobiert haben, hat es auch nicht funktioniert.

Was Ubuntu hat, ist xdg-open. Ubuntu ist hier nicht allein - xdg-openfunktioniert nicht unter Windows oder MacOS, aber auf Systemen mit grafischen Desktop-Umgebungen, die den Standards von freedesktop.org entsprechen. Dies umfasst nahezu jedes GNU / Linux-System (und einige andere Unix-ähnliche Betriebssysteme), wenn auf dem Benutzer eine grafische Desktop-Umgebung installiert ist .

Damit der xdg-openBefehl tatsächlich erfolgreich ist , muss der Benutzer bei einer grafischen Sitzung angemeldet sein.

(Unter macOS würden Sie verwenden open.)