2016-06-26 5 views
0

Ich bin für die Ausführung eine andere Anwendung eine Python-Anwendung zu schreiben. Die Anwendung ist avrdude.exe und möchte die Ausgabe der Anwendung in eine Variable lesen. Ich habe verschiedene Methoden ausprobiert (Unterprozess, Kommunikation, Auschecken usw.), aber alles, was ich bekomme, ist eine leere Zeichenfolge. Irgendwelche Ideen?Erste Anwendung Ausgabe in eine Variable Python

import os 
import subprocess 
from subprocess import Popen, PIPE, STDOUT 
import sys 
p1 = subprocess.Popen(['avrdude.exe', '--help'], stdout=subprocess.PIPE, shell=False) 
output, error = p1.communicate() 
print ("hi") 
print output 
+0

Was enthält 'error'? – SilentMonk

+0

Können Sie avrdude.exe über die Befehlszeile ausführen? Höchstwahrscheinlich ist es nicht richtig eingerichtet und wirft einen Fehler auf. Was ist der Wert von 'p1.returncode' –

+0

Ja. Ich kann es von der Befehlszeile ausführen. Kein Fehler. Ich bekomme nur nichts, wenn ich "Ausgabe" drucke. – user3824502

Antwort

0

Ich denke, Ihre avrdude.exe nicht --help Option nicht zur Verfügung stellen und damit die Ausführung führt nur Fehler ausgegeben.

Versuchen Sie, die exe mit der Option direkt auszuführen, oder geben Sie stderr an, um zu sehen, was Sie von var error erhalten können.

+0

Es tut. Ich kann es direkt von der Befehlszeile ausführen. – user3824502

+0

Fehlervariable ergibt 0. – user3824502

+0

Ich frage mich, ob die Anwendung offen bleiben muss oder so. Da die Anwendung beendet wird, wenn Sie es über die Befehlszeile versuchen. Das sollte auch in diesem Fall passieren. Gibt es eine Möglichkeit, eine Anwendung so einzufrieren, dass sie nicht beendet wird, aber gleichzeitig ihre Ausführung nicht behindert? – user3824502