2016-06-02 15 views
0

Ich führe einen Shell-Befehl über jython os.system Befehl. Mein Code ist unten angegeben:Schreibe Echo-Ausgabe in Datei, wenn Shell von os.system ausgeführt

import os 
import sys 

vCmdLine = "sh C:/scripts/WAQ.sh PARAM_1 PARAM_2 >> C:/logs/WAQ.log 2>&1" 
vCmdRC = os.system(vCmdLine) 

Meine Schale hat mehrere Echo Befehle, die ich möchte in C:/logs/WAQ.log Datei geschrieben werden.

Der Code funktioniert einwandfrei, wenn ich das gleiche unter Unix-Betriebssystem ausführen. Wenn ich das gleiche unter Windows ausführe, schreibt es nichts in C:/logs/WAQ.log Datei. Ich verwende Unix-Util-Bibliothek auf Windows.

Was ist das Problem?

+0

Was ist 'Unix Util lib'? Wenn Sie Jython aus der Gleichung entfernen und einfach 'sh C: /scripts/WAQ.sh ...' in der Befehlszeile ausführen, funktioniert es dann wie erwartet? –

+0

@DavidCharles Hallo, Sorry, ich habe vergessen, das früher zu erwähnen, ja, wenn ich den Befehl direkt von der Windows-Eingabeaufforderung (cmd) ausführen, funktioniert alles gut und Protokoll enthält alle Echo-Anweisungen. – WAQ

Antwort

0

Ich habe einen Code geändert und ersetzen os.system mit subprocess.call und die Protokollierung ist jetzt perfekt. Unten ist mein Code

 
    import subprocess 
    vLogFileName = 'C:/logs/WAQ.log' 
    vCmdLine = "sh C:/scripts/WAQ.sh PARAM_1 PARAM_2" 
    f = open(vLogFileName, "a") 
    subprocess.call(vCmdLine, stdout=f) 
    f.close() 

Warum ist die Protokollierung nicht mit os.system auf Fenstern zu arbeiten?

Verwandte Themen