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