In most Unix/Linux and related OS shells, the angled brackets *do*
specify input and output streams as you surmise. However, they are
*not* seen by the script as command line arguments. (And they are
*not* brackets, and do not need to be matched. )
For any command,
cmd < file
redirects the contents of file to cmd's standard input, which in Python
is accessed by reading from sys.stdin (use input or raw_input or
sys.stdin.read...)
Also for any command,
cmd > file
redirects the output of cmd to the named file. In Python this can be
accessed using print, sys.stdout.write, ...
Anything written to sys.stderr will not be caught by the ">"
redirection, ans so will probably end up on the screen instead of in file..
Also various shells will provide similar functionality using a variety
of similar syntaxes: <<, >>, >&, and |, and so on.
Gary Herron
Thanks all for the quick response. I should have known it was shell-
related. I haven't ever had to use this
kind of redirection before, mostly just the single-bracket version to
feed the contents of a file into some
command.
The reason it was causing me concern in the first place was that I was
trying to execute a python script
from Apache Ant, and it was failing. It turned out that when I escaped
the angle brackets in Ant, they were
there-after treated as normal command-line arguments, so when the
script was then executed, it just had
some additional values in sys.argv.
I ended up getting around the issue by creating a small bash-script
which simply wraps input in angle brackets
and then executes the python script itself. That way I didn't have to
escape anything in in Ant, and things
worked well.
Thanks everyone for taking the time to explain things to me. I really
appreciate the help
Take care,
Keith