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?
Please help me...
Thanks
--
Lic. Yasser Almeida Hernández
Center of Molecular Inmunology (CIM)
Nanobiology Group
P.O.Box 16040, Havana, Cuba
Phone: (537) 271-7933, ext. 221
----------------------------------------------------------------
Correo FENHI
Please post a small, complete example of your code and the error message.
Cut-and-paste them exactly. Also provide the shell command you are running
that works.
-Mark
Quoting MRAB <pyt...@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.
> --
> http://mail.python.org/mailman/listinfo/python-list
2009/11/14 Yasser Almeida Hernández <pedr...@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
s = 'command "%s" -i file2 -w 1.4 -o file3.out' % file1
>
> Quoting MRAB <pyt...@mrabarnett.plus.com>:
Thanks a lot
Quoting MRAB <pyt...@mrabarnett.plus.com>:
> Yasser Almeida Hernández wrote:
>> So, how can i pass an argument as a variable in this context...?
>>
> You can't pass arbitrary values on a command line. In this case, why not
> just pass the path of the file?
>
> s = 'command "%s" -i file2 -w 1.4 -o file3.out' % file1
>
>>
>> Quoting MRAB <pyt...@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.
>>
>
Yasser Almeida Hernández wrote:
> So, how can i pass an argument as a variable in this context...?
>
>