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 -- http://mail.python.org/mailman/listinfo/python-list