Seite 1 von 1
Laufwerksnamen ermitteln
Verfasst: Dienstag 24. März 2009, 18:15
von py_lo
Hallo,
ich bin dabei ein kleines DVD-Backup programm zu schreiben.
Dabei wird der Inhalt der DVD in ein ISO-File geschrieben.
Nun könnte man ja einfach die aktuelle Zeit/Datum für den Dateinamen
verwenden, ich möchte aber gerne den Namen der DVD ermitteln.
Bin noch recht neu in python unterwegs und habe leider nichts
passendes gefunden
Vielleicht könnt Ihr mir ja weiterhelfen....
OS: Ubuntu 'Hardy'
Python 2.4
Verfasst: Dienstag 24. März 2009, 18:33
von Leonidas
Bei mir geht das einfach per Shell:
Code: Alles auswählen
hal-get-property --udi `hal-find-by-capability --capability volume.disc` --key info.product
Erst muss die Unique Device ID gefunden werden, und dann kann man unter dessen dem Schlüssel "info.product" das Label auslesen.
Verfasst: Dienstag 24. März 2009, 21:20
von py_lo
Super, danke!
leider bekomme ich das in python nicht umgesetzt.
Gedacht hab ich mir das irgenwie so:
Code: Alles auswählen
ret = commands.getoutput('hal-get-property --udi ?hal-find-bycapability? --key info.product').split('\n')
Nur so einfach geht das ja nicht, "hal-find-by-capability" ist ja ein eigener
Befehl, wie kann ich das also kombinieren.
hat sich erledigt, funktioniert - hatte schreibfehler!!
Verfasst: Mittwoch 25. März 2009, 02:16
von lunar
Alternativ kannst du HAL auch direkt über DBus nutzen.
Verfasst: Mittwoch 25. März 2009, 07:07
von py_lo
Alternativ kannst du HAL auch direkt über DBus nutzen.
Yo, ähh Danke. Wie meinen?
Hab es jetzt halt so gelöst:
Code: Alles auswählen
dvdname = commands.getoutput("hal-get-property --udi `hal-find-by-capability --capability volume.disc` --key info.product").split('\n')
verzeichnis = "/media/film/" + dvdname[0]
if os.path.exists(verzeichnis):
...
Aber Alternativ heisst ja auch nicht das es besser oder einfacher ist
Verfasst: Mittwoch 25. März 2009, 09:27
von Leonidas
Das ist recht hässlich und wird komische Effekte bringen falls 2 DVDs eingelegt sind. Wenn dann würde man in Python beide Befehle einzeln aufrufen: erst die UDI bestimmen, gucken wie viele gefunden worden sind und Fehler behandeln und dann auf ``info.product`` zugreifen.
Oder wie lunar meinte, HAL über DBus befragen, ist warscheinlich eine hübschere Lösung falls man das ``dbus``-Modul vorraussetzen kann.
Verfasst: Mittwoch 25. März 2009, 12:48
von lunar
py_lo hat geschrieben:Alternativ kannst du HAL auch direkt über DBus nutzen.
Yo, ähh Danke. Wie meinen?
So
Das benötigte dbus-Modul sollte es in den Paketquellen deiner Distribution geben, wahrscheinlich unter dem Namen "python-dbus" oder ähnlich.
Falls du die Lösung mit Unterprozessen beibehalten willst, würde ich zumindest das subprocess-Modul nutzen.