Seite 1 von 1

Unterdrücken des stdout von os.command()

Verfasst: Mittwoch 12. Juli 2006, 16:18
von Clython
Hallo

ich habe einen Python-Wrapper für ein Programm geschrieben, dass ich per Python steuern möchte. Dazu benutze ich os.command(). Das Problem ist jetzt aber, dass mir bei dieser Methode, wenn ich das Script ausführe, jedesmal der Müll auf die Shell geprintet wird, den das Programm beim normalen ausführen in der Shell auch ausdruckt. Beispiel:

# dynamite inputfile > ./blabla.txt
Dynamite Version 1.0
#

Jetzt möchte ich gerne das "Dynamite Version 1.0" unterdrücken (der erwünschte Output wird ja in ein File geleitet und ist somit nicht sichtbar). WIe mache ich das? Mit popen kann ich nicht "dynamite inputfile > ./blabla.txt" direkt als Befehl benutzen und sonst kommt mir auch gerade nichts in den Sinn.

Für einen guten Tipp danke ich im voraus!

Verfasst: Donnerstag 13. Juli 2006, 07:52
von Rebecca
Die Versionsausgabe wird dann wohl nach stderr geleitet. Entweder du benutzt

Code: Alles auswählen

dynamite inputfile > ./blabla.txt 2> blupp.txt
um auch stderr umzuleiten, oder aber popen3, was dir stdin, stdout und stderr liefert:

Code: Alles auswählen

>>> import popen2
>>> [stdout, stdin, stderr] = popen2.popen3("ls /gibts/nicht")
>>> print stdout.read()

>>> print stderr.read()
ls: /gibts/nicht: No such file or directory

>>> 
(Bzw. neuerdings nimmt man dafuer das Modul subprocess...) Dann muesstest du halt selbst fuer das Speichern in eine Datei sorgen, falls du das brauchst.

Verfasst: Donnerstag 13. Juli 2006, 08:06
von Clython
Rebecca hat geschrieben:Die Versionsausgabe wird dann wohl nach stderr geleitet. Entweder du benutzt

Code: Alles auswählen

dynamite inputfile > ./blabla.txt 2> blupp.txt
Perfekt! Danke. :-D