Python Problem

schwedenmann

schwedenmann

Foren Gott
Hallo


Ich versuche mir ein kleines Pythonprogramm zu basteln, um ISO-Dateien zu brenne und zu erstellen, ist quasi mien programmiereinstieg, in absoluter Anfänger, aslo nicht hauen, wenn die folgende Frage trivial ist.

Zum Problem ich mölchte folgenden Auzfruf
wodim --devices zwar ausführen lassen, das klappt auch per subprocess


device= "devices"
befehl= "wodim --%s" %(device,)
print befehl
#process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
process = subprocess.Popen(befehl , shell=True, stdout=subprocess.PIPE)
process.wait()
print process.stdout.read()

die ersten beiden Zeilen sind natürlich nicht nötig, aber will später die Lese- und Schreiboptionen der Linuxbrennprogramme so zusammensetzen und dann an subprocess übergeben.

bei wodim --devicesd klappt das einwandfrei ich erhalt dan später als shellausgabe

wodim --devices
wodim: Overview of accessible drives (2 found) :
-------------------------------------------------------------------------
0 dev='/dev/hdc' rwrw-- : 'TOSHIBA' 'DVD-ROM SD-M1912'
1 dev='/dev/hdd' rwrw-- : 'HL-DT-ST' 'DVDRAM GSA-4163B'
-------------------------------------------------------------------------

wie kann ich diese Ausgabe (nicht der printbefehl für den befehl selbst, in eine Datei schreiben um diese dann weiter zu verarbeiten, ich möchte später über wodim --devices die devicename automatisach ermitteln und in Variablen abspeichern, nur so als Test.

mfg
schwedenmann
 
Nur zur sicherheit, du willst die Ausgabe von "wodim --%s" in eine Datei schreiben? Da würde es schon reichen wenn du das ganze so schreiben würdest:

Code:
befehl= "wodim --%s > datei.txt" %(device,)

oder für den Fall das ich es nicht richtig verstanden habe kannst du es auch mal so versuchen, ohne garantie habe ich nämlich nicht getestet :)
Code:
device= "devices"
befehl= "wodim --%s" %(device,)
print befehl
#process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
process = subprocess.Popen(befehl , shell=True, stdout=subprocess.PIPE)
process.wait()
datei = open("datei.txt", "w")
datei.write(process.stdout.read())
datei.close()

Hoffe geholfen zu haben

EDIT:
Hier ein Beispiel wie du das ganze aus der Datei wieder auslesen kannst:
Code:
LaufwerkListe = []
datei = open("datei.txt", "r")
for zeile in datei:
	if zeile [7:12] == "/dev/":
		LaufwerkListe.append(str((zeile[7:15])))
datei.close()

print "Laufwerke: " + str(LaufwerkListe)
print "Es sind: " + str(len(LaufwerkListe)) + " Laufwerke"

Die Ausgabe mit print ist zwar nicht sehr schön anzusehen, aber meine % Taste will in der VM hier nicht :)

Erklärung dazu:
if zeile [7:12] == "/dev/":
fragt ab ob es sich bei dem Abschnitt um ein Laufwerk in der Liste handelt (Achtung zeile [8:11] gibt auch in der ersten Zeile von devices ein dev zurück :)

LaufwerkListe.append(str((zeile[7:15])))
Trägt das ganze in eine Liste ein :)

EDIT2:
Das ganze klappt natürlich nur bis zum Laufwerk nummer 9, ab dem Laufwerk würde es keine neuen mehr finden da durch die nummerierung alles ein Feld nach rechts rutscht. Sollte aber nicht relevant sein, zumindest kenne ich keinen der 10 Brenner im Rechner hat :)

In diesem Sinne
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

K3b bricht Audio-CD-brennen immer ab

cdrecord, k3b oder gnomebaker

Zurück
Oben