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)
--
http://mail.python.org/mailman/listinfo/python-list