Test for an empty directory that could be very large if it is not empty?

Terry Reedy tjreedy at udel.edu
Wed Aug 6 21:15:04 EDT 2014


On 8/6/2014 6:44 PM, Tim Chase wrote:
> On 2014-08-07 08:26, Ben Finney wrote:
>> Virgil Stokes <vs at it.uu.se> writes:
>>> Suppose I have a directory C:/Test that is either empty or
>>> contains more than 2000000 files, all with the same extension
>>> (e.g. *.txt). How can I determine if the directory is empty
>>> WITHOUT the generation of a list of the file names in it (e.g.
>>> using os.listdir('C:/Test')) when it is not empty?
>>
>> Certainly ‘os.listdir(foo)’ is the simplest way to determine the
>> entries in a directory, and thereby to test whether it is empty.
>> That simplicity is very valuable, and you should have a compelling,
>> *measured* reason to do something more complicated. What is it?
>
> With all the changes in 2->3 where many listy things were made into
> iteratory things (e.g. range()), I was surprised that os.listdir()
> didn't do likewise since I believe that just about every OS uses some
> iterator-like call behind the scenes anyways.

I expect 3.5 will have a scandir generator function.

> The difference in timings when serving a web-request are noticeable
> (in my use-case, I had to change my algorithm and storage structure
> to simplify/avoid heavily-populated directories)
>
> -tkc
>
>


-- 
Terry Jan Reedy





More information about the Python-list mailing list