On 1/30/2013 1:11 PM, MRAB wrote:
On 2013-01-30 17:15, noydb wrote:
I am looking for some guidance on using subprocess to execute an EXE
with arguments and an output. The below code works in that it returns
a 0 exit code, but no output file is created. I have tried a few
different versions of this code (used Popen instead, some
stderr/stdout), but no luck. Can anyone offer an explanation or
suggestion? (GPSBabel is freeware)
Python 2.7 on windows7 64-bit
import subprocess
subprocess.call([r"C:\Program Files (x86)\GPSBabel\gpsbabel.exe",
"-i", "gdb", "-f", r"C:\Temp\GDBdata\testgps28.gdb",
"-o", "gpx", r"C:\Temp\gpx\test28output.gpx"])
If I use this below, I get a returncode of 1, exit code of 0.
import subprocess
x = subprocess.Popen([r"C:\Program Files (x86)\GPSBabel\gpsbabel.exe",
"-i", "gdb", "-f", r"C:\Temp\GDBdata\testgps28.gdb",
"-o", "gpx", r"C:\Temp\gpx\test28output.gpx",
"shell=True", "stdout=subprocess.PIPE",
"stderr=subprocess.PIPE"])
x.wait()
print x.returncode
Thanks in advance for any help
The second example is incorrect. The parts starting from "shell" are
supposed to be further arguments for Popen itself, not something passed
to "gpsbabel.exe":
x = subprocess.Popen([r"C:\Program Files (x86)\GPSBabel\gpsbabel.exe",
"-i", "gdb", "-f", r"C:\Temp\GDBdata\testgps28.gdb",
"-o", "gpx", r"C:\Temp\gpx\test28output.gpx"],
shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
and it is apparently best to not use shell=True unless actually needed
for shell processing, which I do not think is the case here.
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list