2017-08-11 7 views
-2

Da die subprocess.call cmd .exe flash off aufruft, geben Sie einfach den Wert '1' zurück, was auf einen Ausführungsfehler hinweist. Ich kann nur einen Screenshot erklären.Seltsam über subprocess.call in Python

Unter win cmd läuft es gut. Warum bricht es subprocess.call?

Year: 979 
Year: 980 
Year: 981 
Year: 982 
Year: 983 
Year: 984 
Year: 985 
Year: 986 
Year: 987 
Year: 988 
Year: 989 
SPINUP: residual trend = -0.000069 
SPINUP: number of years = 990 
H:\calibration\bgcclimb>pointbgc.exe .\ini\spinup\t59_13_79_29_11_80_8.ini 

Verwenden subproceess.call in Python: Rückgabewert '1', nicht '0'

subprocess.call([r'H:\calibration\bgcclimb\pointbgc.exe',r'.\ini\spinup\t59_13_79_29_11_80_8.ini']) 
Out[7]: 1 

Verwenden subprocess.Popen Check stderr:

process = subprocess.Popen([r'H:\calibration\bgcclimb\pointbgc.exe',r'.\ini\spinup\t59_13_79_29_11_80_8.ini'], shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 
out, err = process.communicate() 
errcode = process.returncode 

err 
Out[3]: b"Can't open .\\ini\\spinup\\t59_13_79_29_11_80_8.ini for ascii read ... Exiting\r\nError opening init file, pointbgc.c\r\n" 
+0

Capture die stdout und stderr oder den Anruf und es wird Ihnen wahrscheinlich sagen, was los ist. –

+0

stderr hinweis: 'b" kann nicht geöffnet. \\ ini \\ spinup \\ t59_13_79_29_11_80_8.ini für ascii lesen ... Beenden \ r \ nFehler beim Öffnen der Init-Datei, pointbgc.c \ r \ n "' @ ers81239 – Cobin

+1

Bitte posten Sie keine * Bilder * von Text. Einfach den Text selbst posten. – larsks

Antwort

0

Das Problem hat zu tun mit dem relativen Pfad, den Sie verwenden. Geben Sie den vollständigen Pfad zur INI-Datei an.

Ich bin kein Experte auf diesem, aber es in etwa so: Wenn Sie Subprocess.call aufrufen, wird das Betriebssystem in einer neuen Umgebung ausgeführt. Es ist nicht wirklich eine vollständige Shell, es sei denn, Sie übergeben Shell = True. In der neuen Umgebung ist das aktuelle Arbeitsverzeichnis daher entweder anders oder nicht definiert, sodass die Bezugnahme auf einen relativen Pfad nicht funktioniert.