Angle brackets in command-line arguments?

Keith Hughitt keith.hughitt at gmail.com
Wed Jul 16 17:29:26 CEST 2008


On Jul 16, 11:16 am, Gary Herron <gher... at islandtraining.com> wrote:
> Keith Hughitt wrote:
> > Hi all,
>
> > I am using someone else's script which expects input in the form of:
>
> >      ./script.py <arg1> arg2
>
> > I was wondering if the angle-brackets here have a special meaning? It
> > seems like
> > they specify an input and output stream to use in place of the
> > console. I could not
> > find anything in the python manual or Python in a Nut-shell though.
>
> > Anyone know?
>
> > Thanks,
> > Keith
> > --
> >http://mail.python.org/mailman/listinfo/python-list
>
> 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



More information about the Python-list mailing list