On 6/10/11 12:58 PM, Mark Phillips wrote:
On Fri, Jun 10, 2011 at 10:41 AM, MRAB <pyt...@mrabarnett.plus.com
<mailto:pyt...@mrabarnett.plus.com>> wrote:

    On 10/06/2011 18:21, Mark Phillips wrote:

        I have a script that processes command line arguments

        def main(argv=None):
             syslog.syslog("Sparkler stared processing")
             if argv is None:
                 argv = sys.argv
             if len(argv) != 2:
                 syslog.syslog(usage())
             else:
                 r = parseMsg(sys.argv[1])
                 syslog.syslog(r)
             return 0

        if __name__ == "__main__":
             sys.exit(main())

        When I run "python myscript fred" it works as expected - the argument
        fred is processed in parseMsg as sys.arv[1]

        When I run "echo fred | python myscript" the script thinks there are no
        arguments, so it prints out the usage statement.

        Is the problem with the echo command, or how I wrote my script?

    In the second case, there aren't any arguments. The echo command is
    writing "fred" to its standard output, which is attached to your
    script's standard input.

How do I write my script so it picks up argument from the output of commands
that pipe input into my script?

You may want to just use the appropriate shell syntax instead:

  $ python myscript `echo fred`

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to