[Python-Dev] pipe syntax for sequential data

Bob Ippolito bob at redivi.com
Tue Apr 13 12:39:55 EDT 2004


On Apr 13, 2004, at 12:10 PM, Josiah Carlson wrote:

>>> This recipe proposes an alternative syntax for sequential data
>>> processing functions, that reflects unix shell pipe syntax. Here is 
>>> an
>>> example:
>>>
>>> bash_users = ( file('/etc/passwd') | grep('/bin/bash') | aslist )
>>>
>>> I don't know if this idea was already explored before; hope this can
>>> be useful. For details and sample code please see link above.
>>
>> If you're serious about this, you'll need to write up a PEP and push 
>> it
>> forward.
>
>
> While some would call Python a 'scripting language', I think that using
> pipes in such a way in Python would be counter to the zen:
> "There should be one-- and preferably only one --obvious way to do it."

But there are others, such as "Although practicality beats purity".

This case is already pretty practical using existing syntax though:
[line for line in file('/etc/passwd') if '/bin/bash' in line]

Though it does pollute the locals..

> We can already use list comprehensions, filter and friends (or ifilter 
> as used by
> MK), when such functionality is desired.  IMO, just because you can 
> make
> a language  behave like a command line, does not necessarily mean that
> you should.

Of course you should, but that doesn't mean it should be __builtin__.

-bob




More information about the Python-Dev mailing list