+1 on getting this in for 3.5.

If the only objection people are having is the stupid paint color of the name I don't care what it's called!  scandir matches the libc API of the same name.  iterdir also makes sense to anyone reading it.  Whoever checks this in can pick one and be done with it.  We have other Python APIs with iter in the name and tend not to be trying to mirror C so much these days so the iterdir folks do have a valid point.

I'm not a huge fan of the DirEntry object and the method calls on it instead of simply yielding tuples of (filename, partially_filled_in_stat_result) but I don't really care which is used as they both work fine and it is trivial to wrap with another generator expression to turn it into exactly what you want anyways.

Python not having the ability to operate on large directories means Python simply cannot be used for common system maintenance tasks.  Python being slow to walk a file system due to unnecessary stat calls (often each an entire io op. requiring a disk seek!) due to the existing information that it throws away not being used via listdir is similarly a problem. This addresses both.

IMNSHO, it is a single function, it belongs in the os module right next to listdir.


On Thu, Jun 26, 2014 at 6:37 PM, Ben Hoyt <benhoyt@gmail.com> wrote:
I don't mind iterdir() and would take it :-), but I'll just say why I
chose the name scandir() -- though it wasn't my suggestion originally:

iterdir() sounds like just an iterator version of listdir(), kinda
like keys() and iterkeys() in Python 2. Whereas in actual fact the
return values are quite different (DirEntry objects vs strings), and
so the name change reflects that difference a little.

I'm also -1 on windows_wildcard. I think it's asking for trouble, and
wouldn't gain much on Windows in most cases anyway.


On Thu, Jun 26, 2014 at 7:43 PM, Ethan Furman <ethan@stoneleaf.us> wrote:
> On 06/26/2014 04:36 PM, Tim Delaney wrote:
>> On 27 June 2014 09:28, MRAB wrote:
>>> Personally, I'd prefer the name 'iterdir' because it emphasises that
>>> it's an iterator.
>> Exactly what I was going to post (with the added note that thee's an
>> obvious symmetry with listdir).
>> +1 for iterdir rather than scandir
>> Other than that:
>> +1 for adding [it] to the stdlib
> +1 for all of above
> --
> ~Ethan~
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/benhoyt%40gmail.com