2008/3/27, Skip Montanaro <[EMAIL PROTECTED]>: > > > >>> proc = subprocess.Popen ("ls /tmp") > > > > proc = subprocess.Popen ("ls /tmp", shell=True) > > > > or > > > > proc = subprocess.Popen (["ls", "/tmp"]) > > > > should work. > > > Why should I need to set shell=True?
The default is shell=False, which means that Popen will use os.excevp to execute your command, (talking about UNIX here), which in turn expects a list as the "args" parameter, but you are passing a string. Setting shell=True makes Popen execute the string passed through the shell. > I'm not globbing anything. The > second case still fails: > > >>> proc = subprocess.Popen (["/usr/bin/ls" "/tmp"]) Notice how yours is lacking a comma separating the strings while mine does include it. > > Traceback (most recent call last): > > File "<stdin>", line 1, in ? > File "/opt/app/g++lib6/python-2.4/lib/python2.4/subprocess.py", line 542, in > __init__ > errread, errwrite) > File "/opt/app/g++lib6/python-2.4/lib/python2.4/subprocess.py", line 975, in > > _execute_child > raise child_exception > > OSError: [Errno 20] Not a directory > > Thx, > > > Skip > > > -- > http://mail.python.org/mailman/listinfo/python-list > -- -- Guilherme H. Polo Goncalves -- http://mail.python.org/mailman/listinfo/python-list