2016-10-22 4 views
1

ich diese Python-Code von der Befehlszeile leite:konnte nicht verlassen oder Beenden Python-Skript über die Befehlszeile

# run on command line as: python firstscript.py  
import sys, subprocess 

pid = subprocess.Popen([sys.executable, 'secondscript.py']).pid 
sys.exit() 

Leider kann ich es nicht bekommen den ganzen Weg in die Befehlszeile zu verlassen. Wenn ich die Eingabetaste (unter OSX) drücke, wird es beendet. Gibt es eine Möglichkeit, das Skript dazu zu zwingen, den gesamten Weg zur Befehlszeile zu verlassen, ohne in diesem merkwürdigen Limbo-Zustand zu verweilen? Außerdem möchte ich stdout oder stderr nirgendwo anders umleiten, weil, wenn ich das tue, ich die Fähigkeit in secondscript.py verliere, um Ausgabe in eine Protokolldatei zu protokollieren.

Danke für die Hilfe.

+0

Sie finden diese hilfreich: http://stackoverflow.com/questions/4084322/killing-a-process-created-with-pythons-subprocess-popen –

+0

Irgendwelche Chance, dass firtscript.py * zur Befehlszeile gewechselt hat, aber secondscript.py hat weiterhin Text in die Konsole geschrieben und die Eingabeaufforderung ausgeblendet, die gedruckt wurde, als das erste Skript beendet wurde? Lies deine Scrollback-Geschichte sorgfältig durch. Wenn Sie die Eingabetaste drücken, druckt das Terminal eine neue, neue Eingabeaufforderung aus. –

Antwort

0

Die Änderungen unten für mich gearbeitet:

# run on command line as: python firstscript.py  
import sys, subprocess 

process = subprocess.Popen([sys.executable, 'secondscript.py']) 
output = process.communicate()[0] 
0

Sie scheinen zu fragen, ob es einen besseren Weg gibt, dies zu tun. Checken Sie check_output aus. Ich habe es immer viel praktischer und narrensicherer im Vergleich zu den unteren Ebenen im Subprozess gefunden.

Verwandte Themen