[Tutor] error when using using subprocess.popen in Python wrapper script

Martin A. Brown martin at linux-ip.net
Mon May 7 05:23:40 CEST 2012


 : perl_prog = "perl perlprog.pl"
 : perl_prog_h ="-h"
 : #this is where it breaks
 : subprocess.call([perl_prog, perl_prog_h])

This is asking your Linux to search your $PATH and execute a program 

  'perl perlprog.pl'

Rather than to execute a program called 'perl' and pass as the first 
argument 'perlprog.pl'.

  perl_bin = 'perl'
  perl_prog = '/path/to/perlprog.pl'
  perl_prog_h = '-h'
  subprocess.call([perl_bin, perl_prog, perl_prog_h])

Or, if I were in your shoes, I would do something a bit more like 

  cmd = [ '/usr/bin/perl', '/path/to/perlprog.pl', '-h' ]

Probably the most interesting thing here for you to note in the long 
run is to learn what 'magically' happens in the shell when you run a 
command.  Since you are using Linux, you may find strace useful 
to see what Python is passing to your system for execution:

  strace -e process python /path/to/your/python/script.py



Martin A. Brown

More information about the Tutor mailing list