2010-12-20 7 views
1

In einem Python-Skript ("main.py") verwende ich das Unterprozessmodul, um ein anderes Skript ("sub_script.py") auszuführen.Direkte Skriptausgabe in eine Datei mit Subprozess?

Hier ist der Code in dem Skript "main.py", dass "sub_script.py" 'läuft':

subprocess.Popen([sys.executable, "sub_script.py"]) 

diese in Ordnung, solange "sub_script.py" funktioniert hat keinen "print" Aussagen darin.

Ich möchte jetzt die gesamte Ausgabe von "sub_script.py" zu einer externen Datei ("log.txt") channeln.

Wie mache ich das?

+3

Warum nicht einfach 'sub_script' importieren? Warum all dieses zusätzliche Subprozessgeschäft? –

+0

Ich benutze "main.py" mit Cron - so ist es hilfreich für mich Subprozess zu verwenden. – user3262424

+0

'import' und das Starten eines Subprozesses machen grundsätzlich andere Dinge. Für Anfänger wird das Skript überhaupt nicht mit dem Import ausgeführt, wenn es 'if __name__ =" __main __ ":' block verwendet, Sie könnten Schwierigkeiten beim Weiterleiten der Ausgabe haben (was hier erforderlich ist), und Ihr Hauptscript müsste warten um den Index zu beenden. Außerdem können Sie ein Skript im allgemeinen Fall nicht wirklich importieren (weil Sie keine Garantie haben, dass es sich um eine .py-Datei im Python-Pfad handelt). –

Antwort

2
subprocess.Popen([sys.executable, "sub_script.py"], stdout=open("log.txt", "a")) 
Verwandte Themen