On Mon, May 17, 2010 at 1:45 PM, <pyt...@bdurham.com> wrote: > Windows version of Python 2.6.4: Is there any way to determine if > subprocess.Popen() fails when using shell=True? > > Popen() successfully fails when shell=False > >>>> import subprocess >>>> p = subprocess.Popen( 'Nonsense.application', shell=False ) > Traceback (most recent call last): > File "<pyshell#258>", line 1, in <module> > p = subprocess.Popen( 'Nonsense.application' ) > File "C:\Python26\lib\subprocess.py", line 621, in __init__ > errread, errwrite) > File "C:\Python26\lib\subprocess.py", line 830, in > _execute_child > startupinfo) > WindowsError: [Error 2] The system cannot find the file specified > > But when shell=True, there appears to be no way to determine if a > Popen() call was successful or not. > >>>> p = subprocess.Popen( 'Nonsense.application', shell=True ) >>>> p > <subprocess.Popen object at 0x0275FF90> >>>> p.pid > 6620 >>>> p.returncode >>>>
I don't have a Windows box to test on, but have you tried p.wait()? Worked for me on *nix: $ python Python 2.6.5 (r265:79063, May 11 2010, 13:15:13) [GCC 4.2.1 (Apple Inc. build 5659)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from subprocess import Popen >>> a = Popen("nonsense", shell=True) >>> /bin/sh: nonsense: command not found >>> a.returncode >>> a.wait() 127 >>> a.returncode 127 Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list