Python kullanarak bir mp3 dosyası oynatın

Oct 06 2020

CountDown Programı adlı bu koda sahibim. Programımın yaptığı şey:

  1. 60'tan geri sayım.

  2. alarm.wavGeri sayım sıfıra ulaştığında bir ses dosyası ( ) çalın . Bu, kodun aşağıdakileri yapması gerektiği anlamına gelir:

    • Arayarak geri sayımdaki her bir numarayı görüntüleme arasında bir saniye duraklayın time.sleep().

    • subprocess.Popen()Varsayılan uygulama ile ses dosyasını açmak için arayın .

İşte bunun kodu:

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

Bunu çalıştırdığımda şunu elde ederim:

Error: File not Found

İle denedim:

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

Ama bende:

Error: Permission denied

Sonra denedim Popen:

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

Ama bende:

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

Bu kodun Ubuntu'da neden çalışmadığından tam olarak emin değilim, çünkü Windows'ta iyi çalışıyor.

Bunun için ne yapabilirim? Ubuntu 20.04 LTS'de Python kullanarak mp3 dosyalarını açmanın herhangi bir yöntemi var mı yoksa herhangi bir argümanı mı kaçırıyorum?

Şimdiden teşekkürler.

Yanıtlar

3 EliahKagan Oct 07 2020 at 00:32

Kullanım:

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

bomb.mp3(veya alarm.wav) çalıştırmak istediğiniz bir program veya komut dosyası değil, açmak istediğiniz bir dosyadır. Görünüşe göre amacınız, onu işlemek için şu anda kayıtlı olan grafiksel uygulamada açmak gibi göründüğünden - ki bu, komut dosyanızın önceki sürümlerinden en az birinin Windows'ta çalıştırıldığında yaptığı şeydir - xdg-openkomutu kullanmalısınız .

Kullanmanın yanı sıra , yolun önüne xdg-openbir öncü de ekledim /, bu olmadan geçerli dizine göre çözülür (geçerli dizin dışında muhtemelen başarısız olur /).


Programınızın ilk sürümü veya ona benzer bir şey Windows'ta çalışmış olabilir çünkü Windows'ta çalıştırılamayan dosyalar komut olarak çalıştırılabilir. Bu, dosya türlerinin ilişkili olduğu programla açık olmalarına neden olur. Çoğu işletim sistemi ve çoğu kabuk bu şekilde davranmaz. Windows ayrıca bunu yapmak için (biraz farklı anlambilimle) adlı bir komut sağlar start. Ancak Ubuntu gibi diğer işletim sistemlerinde yoktur start. Yani bunu Ubuntu'da denediğinizde, işe yaramadı.

Ubuntu'nun sahip olduğu şey xdg-open. Ubuntu burada yalnız xdg-opendeğil - Windows veya macOS'ta çalışmıyor, ancak freedesktop.org standartlarını takip eden grafik masaüstü ortamlarına sahip sistemlerde çalışıyor . Bu, eğer kullanıcı bir grafik masaüstü ortamına sahipse , hemen hemen tüm GNU / Linux sistemlerini (ve diğer bazı Unix benzeri işletim sistemlerini) içerir .

İçin xdg-openkomut aslında hiç başarılı , kullanıcı bir grafik oturuma giriş yapmalısınız.

(MacOS'ta kullanırsınız open.)