popen - problem mit stdout
Verfasst: Freitag 1. Februar 2008, 14:03
Hallo Leute,
Ich habe mir viele Threads durchgelesen über subprocess etc. leider hab ich keine Lösung gefunden für folgendes Problem.
Ich benutze Ubuntu(7.10) und den Befehl 'unrar', der in der Shell enthalten ist. Nun übergebe ich 'unrar' Parameter zum Entpacken von RarArchiven, soweit so gut, funktioniert und mit bekomme ich alle Zeilen aus der Shell umgeleitet in meine stdout variable.
Nun das Problem:
Angenommen das RarArchiv besteht aus 2 oder n Parts und es sind noch nicht alle vorhanden, dann wird alles soweit entpackt bis zu dem Part der fehlt. Auf der Shell wird dann sowas ausgegeben wie "Insert Disk with test.part2.rar" [C] continue [C] Cancel ". Genau diesen String möchte ich in der stdout haben. Wenn ich alles normal "per Hand" in die Shell eingebe wird letzeres auch angezeigt nur wenn ich alles mit anspreche hab ich das Gefühl, dass das Programm an der Stelle wartet und das Programm einfriert. Nur wenn diese Zeile nicht ausgegeben wird kann ich auch schlecht darauf reagieren.
Ich hoffe mein Problem ist klar geworden, ich bitte um Rat.
mfg
Jan =)
Ich habe mir viele Threads durchgelesen über subprocess etc. leider hab ich keine Lösung gefunden für folgendes Problem.
Ich benutze Ubuntu(7.10) und den Befehl 'unrar', der in der Shell enthalten ist. Nun übergebe ich 'unrar' Parameter zum Entpacken von RarArchiven, soweit so gut, funktioniert und mit
Code: Alles auswählen
stdout.read()
Nun das Problem:
Angenommen das RarArchiv besteht aus 2 oder n Parts und es sind noch nicht alle vorhanden, dann wird alles soweit entpackt bis zu dem Part der fehlt. Auf der Shell wird dann sowas ausgegeben wie "Insert Disk with test.part2.rar" [C] continue [C] Cancel ". Genau diesen String möchte ich in der stdout haben. Wenn ich alles normal "per Hand" in die Shell eingebe wird letzeres auch angezeigt nur wenn ich alles mit
Code: Alles auswählen
subprocess.popen
Ich hoffe mein Problem ist klar geworden, ich bitte um Rat.
mfg
Jan =)
Code: Alles auswählen
command = 'unrar e -p%s %s %s' %(pw,dateipfad,zielpfad)
terminalclient=subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)