Re: [SOLVED] Calling multiple programs with subprocess
On Sat, Apr 24, 2010 at 08:22:14AM +0530, Kushal Kumaran wrote: [snip] Run a shell (cmd.exe, I think) using subprocess and send it the commands you want to run using the communicate() method. Actually, I ended up using stdin.write('...\n'), and it works as expected: # # Set WindRiver environment for VxWorks 6.4 # wrenv_path = C:\WindRiver\wrenv.EXE args = [wrenv_path, '-p', 'vxworks-6.4'] proc = subprocess.Popen(args, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE ) proc.stdin.write(str.encode('wrws_update -data %s -l %s -b clean\n' % (workspace, self.target))) output, error = proc.communicate() print(output) print(error) You can keep using stdin.write until you call communicate() this allows you to write certain commands to the stdin for the process you launched. Note: wrenv.exe is actually a shell like cmd.exe. The above code is written for Python 3.1. Thanks for the help. -- http://mail.python.org/mailman/listinfo/python-list
Re: Calling multiple programs with subprocess
On Thu, Apr 22, 2010 at 10:12:47PM -0400, Dave Angel wrote: amit wrote: How does one go about calling multiple programs using subprocess? This is the program flow: C:\ wrenv.exe C:\ make clean .. .. The 'wrenv.exe' is necessary since it sets up the proper environment for building. How do I use subprocess to execute 'wrenv.exe' and then the 'make clean' command. Any help is appreciated. Thanks, Amit One way is to write a batch file (since you're on Windows), and execute that with shell=True. It's not the only way, or the most efficient. But it's most likely to work, without knowing anything more about those two programs. DaveA Thanks Dave. That's actually a good idea and in this case probably the only way that this would work. I can auto-generate the batch file from the python script with the parameters that I need and just execute that with the subprocess. I wish there was a cleaner was as well. But thanks for tip! Amit -- http://mail.python.org/mailman/listinfo/python-list