win32: computing sizes of directories

Donald O'Donnell donod at home.com
Fri Nov 10 22:22:30 EST 2000


Sorry,
The penultimate line should read:

             size = size + dirSize(path)  # recursive call
(corrected below)
Don

Donald O'Donnell wrote:
> 
> Les,
> 
> Here's a little recursive function that should do the job
> on any platform (Windows, Unix or Mac):
> 
> ###################################################
> import os, os.path
> def dirSize(p):
>     """Recursively compute the size of a given directory (p) by
>     adding up the sizes of its component files and sub directories.
>     """
>     size = 0L    # could go over 2 gigs, so better make it a long
>     names = os.listdir(p)   # make a list of the names in the dir
>     for n in names:         # for each name:
>         path = os.path.join(p, n)    # make it a full path name
>         if os.path.isfile(path):     # if it's a file:
>             size = size + os.path.getsize(path)   # add it's size
>         elif os.path.isdir(path):    # if it's a directory:
>             size = size + dirSize(path)  # recursive call
>     return size
> 
> ###################################################
> I've also got a printDirSize function/script which uses this
> function and prints names and sizes of all files/directories in
> a directory (nicely formatted like dir or ls command) to stdout,
> and can also sort on name or size, ascending or descending.
> Let me know if you can use it and I'll pass it along.
> 
> Cheers,
> Don O'Donnell
> 
> Les Schaffer wrote:
> >
> > i was looking for a fast way to compute the size of a subdirectory in
> > wondows (unix: 'du -s dirName' ) on specific directories in windows
> > and i looked through the win32 extensions and couldnt find anything.
> >
> > but i am guessing its in there somewhere. anyone know?
> >
> > many thanks
> >
> > les schaffer



More information about the Python-list mailing list