Run a external program.

Chris Rebert clp2 at rebertia.com
Sat Nov 14 15:50:14 EST 2009


> Quoting MRAB <python at mrabarnett.plus.com>:
>> Yasser Almeida Hernández wrote:
>>>
>>> Hi all!!
>>>
>>> I'm writing a script where i call a external program which receive  some
>>> arguments.
>>> One of this arguments is stored in a variable, that is passed as
>>>  argument as well:
>>>
>>> import os
>>> ...
>>> f = open(file1, 'r')
>>> s = 'command $f -i file2 -w 1.4 -o file3.out'
>>> os.system(s)
>>> ...
>>>
>>> When i run the script i get the next message...
>>> '-i: No such file or directory'
>>> ... with a obvious error in the exit of the program. If i remove  the
>>> option -i i get the same error with every option, even with  those who don't
>>> get any file as argument. (file2 exist).
>>> BUT, when i run the external program in a python shell, it works...
>>>
>>> What's wrong?
>>>
>> The name 'f' in the Python script exists only in Python and is unrelated
>> to the '$f' that the shell sees.

2009/11/14 Yasser Almeida Hernández <pedro.al at fenhi.uh.cu>:
> So, how can i pass an argument as a variable in this context...?

Use the string variable's value when specifying the arguments to the command.

Here's how you'd do it using the newer `subprocess` module:

import sys
import subprocess
args = ['command', file1, '-i', 'file2', '-w', '1.4', '-o',
'file3.out'] #assuming only file1 is variable
return_code = subprocess.call(args, stdin=sys.stdin,
stdout=sys.stdout, stderr=sys.stderr)

Cheers,
Chris
--
http://blog.rebertia.com



More information about the Python-list mailing list