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.
py_lo
User
Beiträge: 60
Registriert: Freitag 20. März 2009, 09:12

Laufwerksnamen ermitteln

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

Beitragvon Leonidas » Dienstag 24. März 2009, 18:33

Bei mir geht das einfach per Shell:

[code=]hal-get-property --udi `hal-find-by-capability --capability volume.disc` --key info.product[/code]

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

Beitragvon py_lo » 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

Beitragvon 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

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

Beitragvon Leonidas » 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

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder