import os, sys import datetime import win32file class Entry (object): __slots__ = ['attributes', 'created_at', 'accessed_at', 'written_at', 'size', 'name', 'shortname'] def __init__ (self, args): self.attributes, created_at, accessed_at, written_at, size_hi, size_lo, _, _, self.name, self.shortname = args self.created_at = datetime.datetime.fromtimestamp (int (created_at)) self.accessed_at = datetime.datetime.fromtimestamp (int (accessed_at)) self.written_at = datetime.datetime.fromtimestamp (int (written_at)) self.size = (size_hi * 2 << 31) + size_lo def __str__ (self): return self.name def __repr__ (self): return "" % self.name def listdir (dir): try: return [Entry (f) for f in win32file.FindFilesIterator (dir + "\\*") if f[8] not in (".", "..")] except win32file.error: print "ERROR -> Problem accessing %s" % dir return [] def walk (top): dirs, nondirs = [], [] for f in listdir (top): if f.attributes & win32file.FILE_ATTRIBUTE_DIRECTORY: dirs.append (f) else: nondirs.append (f) yield top, dirs, nondirs for dir in dirs: for x in walk (os.path.join (top, dir.name)): yield x def folder_size (root): size = 0 for dirpath, dirs, files in walk (root): size += sum (f.size for f in files) return size