Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #93021 > unrolled thread

Re: Simplest/Idiomatic way to count files in a directory (using pathlib)

Started byIan Kelly <ian.g.kelly@gmail.com>
First post2015-06-22 16:48 -0600
Last post2015-06-22 16:48 -0600
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Simplest/Idiomatic way to count files in a directory (using pathlib) Ian Kelly <ian.g.kelly@gmail.com> - 2015-06-22 16:48 -0600

#93021 — Re: Simplest/Idiomatic way to count files in a directory (using pathlib)

FromIan Kelly <ian.g.kelly@gmail.com>
Date2015-06-22 16:48 -0600
SubjectRe: Simplest/Idiomatic way to count files in a directory (using pathlib)
Message-ID<mailman.714.1435013345.13271.python-list@python.org>
On Mon, Jun 22, 2015 at 4:33 PM, Travis Griggs <travisgriggs@gmail.com> wrote:
> <I should proof my posts before I send them, sorry>
>
> Subject nearly says it all.
>
> If i’m using pathlib, what’s the simplest/idiomatic way to simply count how many files are in a given directory?
>
> I was surprised (at first) when
>
>    len(self.path.iterdir())
>
> didn’t work.

len doesn't work on iterators for a number of reasons:

* It would exhaust the iterator, preventing further use.
* The iterator is not necessarily finite.
* Even if it's finite, the length is not necessarily deterministic.
Consider this simple generator:

def gen():
    while random.randrange(2):
        yield 42

> I don’t see anything in the .stat() object that helps me.
>
> I could of course do the 4 liner:
>
>    count = 0
>    for _ in self.path.iterdir():
>        count += 1
>    return count
>
> The following seems to obtuse/clever for its own good:
>
>    return sum(1 for _ in self.path.iterdir())

This is the usual idiom for counting the number of items yielded from
an iterator. Alternatively you can use len(list(self.path.iterdir()))
if you don't mind constructing a list of the entire directory listing.

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web