> 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.
2009/11/14 Yasser Almeida Hernández <pedro...@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 -- http://mail.python.org/mailman/listinfo/python-list