Laufwerksnamen ermitteln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
py_lo
User
Beiträge: 60
Registriert: Freitag 20. März 2009, 09:12

Dienstag 24. März 2009, 18:15

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
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 24. März 2009, 18:33

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
py_lo
User
Beiträge: 60
Registriert: Freitag 20. März 2009, 09:12

Dienstag 24. März 2009, 21:20

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.

:oops:

hat sich erledigt, funktioniert - hatte schreibfehler!!
lunar

Mittwoch 25. März 2009, 02:16

Alternativ kannst du HAL auch direkt über DBus nutzen.
py_lo
User
Beiträge: 60
Registriert: Freitag 20. März 2009, 09:12

Mittwoch 25. März 2009, 07:07

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 :wink:
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 25. März 2009, 09:27

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Mittwoch 25. März 2009, 12:48

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.
Antworten