Windows, Linux oder MacOS?ob auf einem System ein optisches Laufwerk zur Verfügung steht und wenn ja, welche Bezeichnung das Laufwerk hat?
Gruß, noisefloor
Windows, Linux oder MacOS?ob auf einem System ein optisches Laufwerk zur Verfügung steht und wenn ja, welche Bezeichnung das Laufwerk hat?
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf-8
from __future__ import absolute_import, division, print_function
from functools import partial
import dbus
UDISKS_SERVICE = UDISKS_IFACE = 'org.freedesktop.UDisks'
UDISKS_DEVICE_IFACE = UDISKS_IFACE + '.Device'
def main():
bus = dbus.SystemBus()
udisks = bus.get_object(UDISKS_SERVICE, '/org/freedesktop/UDisks')
for path in udisks.EnumerateDevices(dbus_interface=UDISKS_IFACE):
device = bus.get_object(UDISKS_SERVICE, path)
properties_iface = dbus.Interface(device, dbus.PROPERTIES_IFACE)
device_get = partial(properties_iface.Get, UDISKS_DEVICE_IFACE)
if device_get('DeviceIsDrive'):
compatible_media = device_get('DriveMediaCompatibility')
if any(media.startswith('optical') for media in compatible_media):
print(device_get('DeviceFile'), ':', device_get('DriveModel'))
if __name__ == '__main__':
main()
Code: Alles auswählen
# coding=utf-8
import os
from string import ascii_uppercase
gefunden = False
for c in ascii_uppercase:
path = c + ':'
try:
props = os.stat(path)
except WindowsError:
continue
if os.path.isdir(path):
props = os.stat(path)
if props[6] == 0:
# Größe des Objekts in Bytes - bei Audio CDs: 0
print 'Im Laufwerk ' + path + ' ist eine Audio-CD eingelegt.'
gefunden = True
if not gefunden:
print 'Es wurde kein Laufwerk mit eingelegter Audio-CD gefunden.'
Nein. Unter Linux und OSX existieren schon mal keine Laufwerksbuchstaben. Und einen `WindowsError` natürlich auch nicht, sind ja nicht Windows...kodela hat geschrieben:Gehe ich richtig in der Annahme, dass diese Lösung auch unter Linux und OS X funktioniert?
Code: Alles auswählen
# coding=utf-8
import os
from string import ascii_uppercase
gefunden = False
for c in ascii_uppercase:
path = c + ':'
try:
props = os.stat(path)
except:
continue
if os.path.isdir(path):
props = os.stat(path)
if props.st_size == 0 and props.st_mtime < 0:
print 'Im Laufwerk ' + path + ' ist eine Audio-CD eingelegt.'
gefunden = True
if not gefunden:
print 'Es wurde kein Laufwerk mit eingelegter Audio-CD gefunden.'
Das solltest Du grundsätzlich nicht machen. Ein ``try... except...`` Block sollte nicht alle möglichen Fehler behandeln sondern explizit nur die Fehler, bei denen Du dann auch weißt, was bei ihrem Auftreten zu tun ist.kodela hat geschrieben:Ursprünglich hatte ich nur "except" gesetzt und jetzt auch wieder.