2010-12-10 16 views
3

Wie führe ich ein Programm in meinem Programm aus, ohne zu blockieren, bis das ausgeführte Programm beendet ist?Python: Wie führe ich ein externes Programm aus?

Ich habe versucht:

os.system() 

Aber es stoppt mein Programm, bis das ausgeführte Programm/geschlossen wird gestoppt. Gibt es eine Möglichkeit, mein Programm nach der Ausführung des externen Programms weiterlaufen zu lassen?

Antwort

11

Verwenden Sie das Subprozessmodul.

subprocess einen neuen Prozess laicht, in dem Sie Ihre externe Anwendung ausgeführt wird. Ihre Anwendung setzt die Ausführung fort, während die andere Anwendung ausgeführt wird.

+3

Sofern Sie ausdrücklich darauf warten. –

+2

"os.system" erzeugt auch einen neuen Prozess - "subprocess" gibt Ihnen nur mehr Kontrolle darüber. –

2

Sie könnten das Subprozess Modul verwenden, aber das OS-System wird auch funktionieren. Es funktioniert durch eine Shell, also müssen Sie nur eine '&' am Ende der Zeichenfolge setzen. Wie in einer interaktiven Shell wird es dann im Hintergrund ausgeführt.

Wenn Sie jedoch irgendeine Art von Ausgabe davon erhalten möchten, werden Sie höchstwahrscheinlich das Unterprozessmodul verwenden wollen.

1

können Sie subprocess dafür verwenden:

import subprocess 
import codecs 

# start 'yourexecutable' with some parameters 
# and throw the output away 
with codecs.open(os.devnull, 'wb', encoding='utf8') as devnull: 
    subprocess.check_call(["yourexecutable", 
          "-param", 
          "value"], 
          stdout=devnull, stderr=subprocess.STDOUT 
         ) 
Verwandte Themen