> 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

Reply via email to