> Could you provide the *actual* commands you're using, rather than the generic > "program1" and "program2" placeholders? It's *very* common for people to get > the tokenization of a command line wrong (see the Note box in > http://docs.python.org/2/library/subprocess.html#subprocess.Popen for some > relevant advice). > Hi Chris, first of all thanks for the help. Unfortunately I can't provide the actual commands because are tools that are not publicly available. I think I get the tokenization right, though.. the problem is not that the programs don't run.. it is just that sometimes I get that error..
Just to be clear I run the process like: p = subprocess.Popen(['program1','--opt1','val1',...'--optn','valn'], ... the rest) which I think is the right way to pass arguments (it works fine for other commands).. > > Could you provide the full & complete error message and exception traceback? > yes, as soon as I get to my work laptop.. > > One obvious difference between the 2 approaches is that the shell doesn't > redirect the stderr streams of the programs, whereas you /are/ redirecting > the stderrs to stdout in the non-shell version of your code. But this is > unlikely to be causing the error you're currently seeing. > > > You may also want to provide /dev/null as p1's stdin, out of an abundance of > caution. > I tried to redirect the output to /dev/null using the Popen argument: 'stdin = os.path.devnull' (having imported os of course).. But this seemed to cause even more troubles... > Lastly, you may want to consider using a wrapper library such as > http://plumbum.readthedocs.org/en/latest/ , which makes it easier to do > pipelining and other such "fancy" things with subprocesses, while still > avoiding the many perils of the shell. > > Thanks, I didn't know this library, I'll give it a try. Though I forgot to mention that I was using the subprocess module, because I want the code to be portable (even though for now if it works in Unix platform is OK). Thanks a lot for your help, Cheers, Luca -- http://mail.python.org/mailman/listinfo/python-list