get output of du / ls command - currently ugly code ...

Albert Hopkins marduk at letterboxes.org
Thu Aug 13 22:16:29 CEST 2009


On Thu, 2009-08-13 at 15:28 -0400, Esmail wrote:
> Hi all,
> 
> Essentially all I want to know the size of a directory, and the size
> of a zipped tarball so that I can compute/report the compression ratio.
> 
> The code I have seems hideous, but it seems to work. Surely there is an
> easier,more elegant way to do this?
> 
>      dir_size = os.popen('du -sk somename')
>      data = dir_size.readlines()
>      dir_size = int(data[0].split()[0])
>      print 'dir size: ', dir_size
> 
>      tar_size = os.popen('ls -s somename.tar.gz')
>      data = tar_size.readlines()
>      tar_size = int(data[0].split()[0])
>      print 'tar size: ', tar_size
> 

I don't know about "easier", but a more elegant way is to not use
os.popen() and to use Python's functions os.path.getsize (or os.stat)
and os.walk (or os.path.walk) to achieve this.

In fact if you look at the docstring for os.walk there is an example
that almost does what you're doing with du, but is cross-platform and
not dependent on shelling a process and scraping its stdout.

-a





More information about the Python-list mailing list