piping into a python script

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Thu Jan 24 10:25:51 EST 2008


On Thu, 24 Jan 2008 17:17:25 +0200, Donn Ingle wrote:

> Given these two examples:
> 1. 
> ./fui.py *.py
> 2.
> ls *.py | ./fui.py
> 
> How can I capture a list of the arguments?
> I need to get all the strings (file or dir names) passed via the normal
> command line and any that may come from a pipe.
> 
> There is a third case:
> 3.
> ls *.jpg | ./fui.py *.png
> Where I would be gathering strings from two places.
> 
> I am trying to write a command-line friendly tool that can be used in
> traditional gnu/linux ways, otherwise I'd skip the pipe stuff totally.
> 
> I have tried:
> 1. pipedIn = sys.stdin.readlines()
> Works fine for example 2, but example 1 goes into a 'wait for input' mode
> and that's no good. Is there a way to tell when no input is coming from a
> pipe at all?

Usually Linux tools that can get the data from command line or files treat
a single - as file name special with the meaning of: read from stdin.

So the interface if `fui.py` would be:

1. ./fui.py *.a
2. ls *.a | ./fui.py -
3. ls *.a | ./fui.py *.b -

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list