[Tutor] how to redirect input from pipe
Yosef Levy
yosi.levy99 at gmail.com
Thu Mar 30 02:14:44 EDT 2017
Thank you, it was very helpful.
בתאריך 23 במרץ 2017 02:39, "Peter Otten" <__peter__ at web.de> כתב:
> Yosef Levy wrote:
>
> > Hello All,
> >
> > I am running with Python 2.7
> > I have to run script that could have get arguments in two ways:
> > 1. argument + file name.
> > 2. argument + input from pipe.
> >
> > example for 1:
> > ./my_script.py -t 1,2,3 file_name.txt
> >
> > example for 2:
> > grep snd file_name.txt | ./my_script.py -t 1,2,3
> >
> > I am using "parse_known_args" to parse the rest of args when pipe exists.
> > and capture with: "fileinput".
> >
> > My problem is that this does not run always, for second option.
> > Any idea how could I get standard input with additional flag?
> > for example, running with pipe option will be like this:
> > grep snd file_name.txt | ./my_script.py -t 1,2,3 -
> > where the additional "-" at the end will indicate script to get standard
> > input.
>
> It's not clear to me why you use parse_known_args(). The examples you give
> above seem to be covered by
>
> $ cat tmp.py
> #!/usr/bin/env python
> import argparse
> import fileinput
>
> parser = argparse.ArgumentParser()
> parser.add_argument("--tags", "-t")
> parser.add_argument("files", metavar="file", nargs="*")
> args = parser.parse_args()
>
> print args.tags
> for line in fileinput.input(args.files):
> print line.strip()
> $ cat greek.txt
> alpha
> beta
> gamma
> delta
> $ cat numbers.txt
> ONE
> TWO
>
> Reading from a file:
>
> $ ./tmp.py -t 1,2,3 numbers.txt
> 1,2,3
> ONE
> TWO
>
> Reading from two files:
>
> $ ./tmp.py -t 1,2,3 numbers.txt greek.txt
> 1,2,3
> ONE
> TWO
> alpha
> beta
> gamma
> delta
>
> Reading from stdin:
>
> $ grep ^[ab] greek.txt | ./tmp.py -t 1,2,3
> 1,2,3
> alpha
> beta
>
> Reading from a file, then stdin, then another file:
>
> $ grep ^[ab] greek.txt | ./tmp.py -t 1,2,3 numbers.txt - numbers.txt
> 1,2,3
> ONE
> TWO
> alpha
> beta
> ONE
> TWO
> $
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
More information about the Tutor
mailing list