2016-07-06 4 views
1

Kürzlich habe ich den folgenden Code geschrieben, um eine Python-Datei 'file1.py' von einem anderen Python-Code auszuführen. Ich arbeite an Raspberry Pi (mit raspian)Problem mit Subprozess und popen

Python-Code:

import subprocess 
    subprocess.Popen(['python','./file1.py']) 
    print 'Done' 

Ausgang:

Done 

file1.py nicht ausgeführt wird, keine andere Antwort auf dem Bildschirm

file1.py

a=5 
    a=a+5 
    print(a) 

Ich habe nach der etwas gleichen Frage gesucht, aber es funktioniert nicht für mich. Bitte helfen Sie!

Running multiple Python scripts

+1

Warum verwenden Sie 'subprocess.Popen()', um das andere Skript auszuführen? Können Sie es nicht einfach normal importieren und ausführen? – SiHa

+0

Mögliches Duplikat von [python getoutput() äquivalent im Subprozess] (http://stackoverflow.com/questions/6657690/python-getoutput-equivalent-in-subprocess) – SiHa

+0

Hi @ amratansh- Gupta, warum benutzt du keinen Shebang innerhalb der Datei 'file1.py'? –

Antwort

1

Popen Gabeln des aktuelle Prozess, das heißt, dass Sie die Ausgaben nicht durch den Druck in dem ausgeführten Skript einfach sehen.

Sie müssen seinen Ausgang umleiten:

p = subprocess.Popen(['python','./file1.py'], stdout=subprocess.PIPE) 
print(p.stdout.read()) 
+0

vielen dank, es funktioniert. Wenn meine Datei1.py jedoch Eingabewerte vom Benutzer benötigt, wie kann ich das ändern, damit ich die erforderlichen Daten eingeben kann? –

0
p=subprocess.Popen(["python","1st.py"],stdin=PIPE,stdout=PIPE) 
print p.communicate()[0] 

ODER

print(p.stdout.read()) 

Kommunizieren() wird der zuletzt bearbeiteten Prozessausgabe abrufen, um die Ergebnisse sehen helfen