subprocess.Popen fails, but os.system works

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Wed Apr 25 07:21:59 CEST 2007


In <1177473554.399696.236450 at n35g2000prd.googlegroups.com>, bahoo wrote:

> This line of code fails (see error message at the end),
> 
> last_line = subprocess.Popen(["D:/release/win.exe 0.5 1000 100 D:/
> images/img.ppm out.ppm"], stdout=subprocess.PIPE).communicate()[0]
> 
> but using "os.system" works:
> os.system('D:/release/win.exe 0.5 1000 100 D:/images/img.ppm out.ppm')
> 
> ----------
> C:/Python25/pythonw.exe -u  "D:/run.pyw"
> Traceback (most recent call last):
>   File "D:/run.pyw", line 59, in <module>
>     process_dir(mydir)
>   File "D:/run.pyw", line 52, in process_dir
>     segmentation (dir,f)
>   File "D:/run.pyw", line 35, in segmentation
>     last_line = subprocess.Popen(["D:/release/win.exe 0.5 1000 100 D:/
> images/img.ppm out.ppm"], stdout=subprocess.PIPE).communicate()[0]
>   File "C:\Python25\lib\subprocess.py", line 593, in __init__
>     errread, errwrite)
>   File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
>     startupinfo)
> WindowsError: [Error 22] The filename, directory name, or volume label
> syntax is incorrect
> -----------
> 
> Can anyone tell me why?

You are trying to execute a program named::

  D:/release/win.exe 0.5 1000 100 D:/images/img.ppm out.ppm

Such a program does not exist on your computer.  ;-)

Give `subprocess.Popen()` a list with the program name and the individual
arguments as elements instead.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list