Angle brackets in command-line arguments?
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
> > --
> 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
> 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
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
Thanks everyone for taking the time to explain things to me. I really
appreciate the help :)
More information about the Python-list