Tocar um arquivo mp3 usando python
Eu tenho esse código chamado Programa CountDown. O que meu programa faz é:
Contagem regressiva a partir de 60.
Reproduza um arquivo de som (
alarm.wav) quando a contagem regressiva chegar a zero. Isso significa que o código precisa fazer o seguinte:Faça uma pausa de um segundo entre a exibição de cada número na contagem regressiva, ligando
time.sleep().Chame
subprocess.Popen()para abrir o arquivo de som com o aplicativo padrão.
Aqui está o código para isso:
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'])
Quando eu executo isso, recebo:
Error: File not Found
Eu tentei com:
subprocess.call([ 'home/username/bomb.mp3']) # location specified
Mas eu tenho:
Error: Permission denied
Então, tentei com Popen:
subprocess.Popen(['start', 'bomb.mp3'], shell=True)
Mas eu tenho:
Error: 0123456789bomb.mp3: 1: start: not found
Não tenho certeza de por que esse código não funciona no Ubuntu, porque funciona bem no Windows.
O que posso fazer por isso? Existe algum método para abrir arquivos mp3 usando Python no Ubuntu 20.04 LTS ou estou perdendo algum argumento?
Desde já, obrigado.
Respostas
Usar:
subprocess.call(['xdg-open', '/home/username/bomb.mp3'])
bomb.mp3(ou alarm.wav) não é um programa ou script que você deseja executar, mas um arquivo que deseja abrir. Como seu objetivo parece ser abri-lo em qualquer aplicativo gráfico atualmente registrado para manipulá-lo - o que é o que pelo menos uma das versões anteriores de seu script fazia quando executado no Windows - você deve usar o xdg-opencomando.
Além de usar xdg-open, também adicionei um guia /para a frente do caminho, sem o qual ele é resolvido em relação ao diretório atual (que provavelmente falharia, exceto quando o diretório atual fosse /).
A primeira versão do seu programa, ou algo semelhante a ele, pode ter funcionado no Windows porque, no Windows, arquivos não executáveis podem ser executados como comandos. Isso faz com que eles sejam abertos com qualquer programa ao qual seu tipo de arquivo está associado. A maioria dos sistemas operacionais e shells não se comportam dessa maneira. O Windows também fornece um comando para fazer isso (com semântica ligeiramente diferente) chamado start. Mas outros sistemas operacionais, como o Ubuntu, não têm start. Então, quando você tentou isso no Ubuntu, também não funcionou.
O que o Ubuntu tem é xdg-open. O Ubuntu não está sozinho aqui - xdg-opennão funciona no Windows ou macOS, mas funciona em sistemas com ambientes de desktop gráficos que seguem os padrões do freedesktop.org . Isso inclui praticamente qualquer sistema GNU / Linux (e alguns outros sistemas operacionais do tipo Unix) se o usuário tiver um ambiente de área de trabalho gráfico instalado .
Para que o xdg-opencomando seja realmente bem-sucedido , o usuário deve estar conectado a uma sessão gráfica.
(No macOS, você usaria open.)