Unterdrücken des stdout von os.command()

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.
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Unterdrücken des stdout von os.command()

Beitragvon Clython » Mittwoch 12. Juli 2006, 16:18

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!
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Beitragvon Rebecca » Donnerstag 13. Juli 2006, 07:52

Die Versionsausgabe wird dann wohl nach stderr geleitet. Entweder du benutzt
[code=]dynamite inputfile > ./blabla.txt 2> blupp.txt[/code]
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.
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Beitragvon Clython » Donnerstag 13. Juli 2006, 08:06

Rebecca hat geschrieben:Die Versionsausgabe wird dann wohl nach stderr geleitet. Entweder du benutzt
[code=]dynamite inputfile > ./blabla.txt 2> blupp.txt[/code]


Perfekt! Danke. :-D

Wer ist online?

Mitglieder in diesem Forum: cedsoft