Prev: Download Proprietary Microsoft Products Now
Next: Hi, friends. I wanna ask if there is a function which is able totake a list as argument and then return its top-k maximums?
From: Kushal Kumaran on 23 Apr 2010 22:52 On Sat, Apr 24, 2010 at 1:21 AM, Amit Uttamchandani <amit.uttam(a)gmail.com> wrote: > 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. > Run a shell (cmd.exe, I think) using subprocess and send it the commands you want to run using the communicate() method. -- regards, kushal
From: Amit Uttamchandani on 30 Apr 2010 16:26
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. |