PEP ? os.listdir enhancement

Riccardo Galli riccardo_cut1 at cut2_sideralis.net
Thu Jun 23 12:48:52 EDT 2005


On Thu, 23 Jun 2005 09:21:55 -0600, Ivan Van Laningham wrote:

> Mmmm, how about:
> 
> # mylistdir.py
> import os, os.path
> import sys
> 
> def mylistdir(dir, join=False):
>     for file in os.listdir(dir):
> 	if join:
>             yield join(dir, file)
> 	else:
> 	    yield file
> 
> print list(mylistdir(sys.argv[1]))
> 
> or
> 
> print list(mylistdir(sys.argv[1],os.path.join))
> 
> That way I could def my own join and call it as
> 
> print list(mylistdir(sys.argv[1],myjoin))

I think that the implementation of listdir is done in C, so the
functionality would be added in C too.
by the way, I think 'join' (cute keyword) should be a boolean and not a
callable: the obvious way is that we join path using os.path.join, and not
some sophisticated function. With a boolean keyword code is smaller and if
we want to use our special join function we can do it simply.

e.g
def func(dir,join=False):
  return (join and join(dir,x) or x for x in os.listdir(dir))

os.listdir is actually supposed not to be a generator, like you suggested.
Are there known future changes ?

Bye,
Riccardo

-- 
Riccardo Galli
Sideralis Programs
http://www.sideralis.net



More information about the Python-list mailing list