Versión: todas.
Linux
No para mi sorpresa, la solución en Linux fue ejecutar un simple comando especificando si la entrada debe abrirse (eject
) o cerrarse (eject -t
). Afortunadamente Python incorpora un gran soporte para ejecutar comandos o lanzar nuevos procesos a través del módulo subprocess
.
from subprocess import call call("eject") # Abrir. call(["eject", "-t"]) # Cerrar.
Dada la ausencia de dicho módulo en versiones anteriores a la 2.4, consideren como una segunda opción la convencional aunque poco recomendada os.system()
.
from os import system system("eject") system("eject -t")
Windows
Se utiliza la función mciSendString
, que permite enviar un comando a un dispositivo multimedia. El conjunto de operaciones que soporta MCI es bastante amplio; en este caso, bastará con la implementación del comando set
, que establece los ajustes especificados a un determinado dispositivo. La llamada a la API de Windows se realiza vía el módulo ctypes
.
from ctypes import windll windll.winmm.mciSendStringA("set cdaudio door open", None, 0, 0) # Abrir. windll.winmm.mciSendStringA("set cdaudio door closed", None, 0, 0) # Cerrar.
Usuarios de pywin32 tendrán que conformarse con esta implementación como producto de la ausencia del soporte de las funciones de MCI.
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter
en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.