เล่นไฟล์ mp3 โดยใช้ python
ฉันมีรหัสนี้ชื่อว่าโปรแกรมนับถอยหลัง สิ่งที่โปรแกรมของฉันทำคือ:
นับถอยหลังจาก 60
เล่นไฟล์เสียง (
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 หรือฉันพลาดข้อโต้แย้งใด ๆ
ขอบคุณล่วงหน้า.
คำตอบ
ใช้:
subprocess.call(['xdg-open', '/home/username/bomb.mp3'])
bomb.mp3(หรือalarm.wav) ไม่ใช่โปรแกรมหรือสคริปต์ที่คุณต้องการเรียกใช้ แต่เป็นไฟล์ที่คุณต้องการเปิด ตามที่เป้าหมายของคุณดูเหมือนจะเปิดขึ้นในแอปพลิเคชันกราฟิกที่ลงทะเบียนไว้เพื่อจัดการกับมันซึ่งเป็นสิ่งที่สคริปต์เวอร์ชันก่อนหน้าอย่างน้อยหนึ่งเวอร์ชันทำเมื่อทำงานใน Windows คุณควรใช้xdg-openคำสั่ง
นอกจากการใช้xdg-openแล้วฉันยังได้เพิ่มการนำ/หน้าไปยังส่วนหน้าของพา ธ โดยที่ไม่มีการแก้ไขเมื่อเทียบกับไดเร็กทอรีปัจจุบัน (ซึ่งน่าจะล้มเหลวยกเว้นเมื่อไดเร็กทอรีปัจจุบันคือ/)
โปรแกรมเวอร์ชันแรกของคุณหรือรุ่นที่คล้ายกันอาจทำงานบน Windows ได้เนื่องจากใน Windows ไฟล์ที่ไม่สามารถเรียกใช้งานได้สามารถเรียกใช้เป็นคำสั่งได้ สิ่งนี้ทำให้พวกเขาเปิดด้วยโปรแกรมอะไรก็ได้ที่เกี่ยวข้องกับประเภทไฟล์ ระบบปฏิบัติการส่วนใหญ่และเชลล์ส่วนใหญ่ไม่ทำงานในลักษณะนี้ ของ Windows นอกจากนี้ยังมีคำสั่งการทำเช่นนี้ (ที่มีความหมายที่แตกต่างกันเล็กน้อย) startที่เรียกว่า แต่ระบบปฏิบัติการอื่น ๆ เช่น Ubuntu startไม่ได้มี ดังนั้นเมื่อคุณลองใช้บน Ubuntu มันก็ไม่ได้ผลเช่นกัน
xdg-openสิ่งที่อูบุนตูมีคือ Ubuntu ไม่ได้อยู่คนเดียวที่นี่ - xdg-openไม่ทำงานใน Windows หรือ macOS แต่ทำงานบนระบบที่มีสภาพแวดล้อมเดสก์ท็อปแบบกราฟิกที่เป็นไปตามมาตรฐานfreedesktop.org ซึ่งรวมถึงเพียงใดเกี่ยวกับระบบ GNU / Linux (และบาง Unix เหมือนระบบปฏิบัติการอื่น ๆ ) หากผู้ใช้มีสภาพแวดล้อมเดสก์ทอปแบบกราฟิกที่ติดตั้ง
เพื่อให้xdg-openคำสั่งประสบความสำเร็จจริงผู้ใช้จะต้องเข้าสู่เซสชันกราฟิก
(บน macOS คุณจะใช้open)