how to use subprocess to execute an exe with args and an output
MRAB
python at mrabarnett.plus.com
Wed Jan 30 13:11:51 EST 2013
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)
More information about the Python-list
mailing list