Воспроизведение mp3-файла с помощью python

У меня есть код, называемый программой обратного отсчета. Моя программа делает следующее:

  1. Обратный отсчет от 60.

  2. Воспроизведение звукового файла (alarm.wav), когда обратный отсчет достигает нуля. Это означает, что код должен сделать следующее:

    • Пауза в течение одной секунды между отображением каждого номера в обратном отсчете путем вызова time.sleep().

    • Вызов subprocess.Popen() для открытия звукового файла с приложением по умолчанию.

Вот код:

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

Когда я запускаю это, я получаю:

Error: File not Found

Я пытался с:

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

Но получил:

Error: Permission denied

Затем я пытался с Popen:

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

Но получил:

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

Я не совсем понимаю, почему этот код не работает на Ubuntu, потому что он отлично работает на Windows.

Что я могу сделать для этого? Есть ли способ открыть mp3-файлы с помощью Python на Ubuntu 20.04 LTS или я пропустил какой-либо аргумент?

Заранее спасибо.

1
задан 6 October 2020 в 21:01

1 ответ

Использование:

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

bomb.mp3 (или alarm.wav) это не программа или скрипт, который вы хотите запустить, а файл, который вы хотите открыть. Поскольку ваша цель, по-видимому, состоит в том, чтобы открыть его в любом графическом приложении, которое в настоящее время зарегистрировано для его обработки — что, по крайней мере, одна из более ранних версий вашего скрипта делала при запуске в Windows — вы должны использовать xdg- открыть команду.

Помимо использования xdg-open, я также добавил ведущий / в начало пути, без которого он разрешается относительно текущего каталога (что предположительно сбой, за исключением случаев, когда текущий каталог /).


Первая версия вашей программы или что-то похожее на нее могла работать в Windows, потому что в Windows неисполняемые файлы можно запускать как команды. Это приводит к тому, что они открываются любой программой, с которой связан их тип файла. Большинство операционных систем и большинство оболочек ведут себя иначе.Windows также предоставляет для этого команду (с несколько иной семантикой), которая называется start. Но другие операционные системы, такие как Ubuntu, не имеют start. Поэтому, когда вы попробовали это в Ubuntu, это тоже не сработало.

У Ubuntu есть xdg-open. Ubuntu здесь не одинок — xdg-open не работает в Windows или macOS, но работает в системах с графическим окружением рабочего стола, соответствующих стандартам freedesktop.org. Сюда относится практически любая система GNU/Linux (и некоторые другие Unix-подобные операционные системы) , если у пользователя установлена ​​графическая среда рабочего стола.

Чтобы команда xdg-open была действительно успешной, пользователь должен войти в графический сеанс.

(В macOS вы должны использовать open.)

3
ответ дан 6 October 2020 в 17:32

Другие вопросы по тегам:

Похожие вопросы: