def printtree(node, options, level): #if not dirfirst, combine lists #sort lists if options.depth >= 0 and level > options.depth: return combined = None if options.sortfirst: node.dirs.sort() node.files.sort() if options.dirfirst: combined = node.dirs+node.files else: combined = node.files+node.dirs else: if options.dirfirst: combined = node.dirs+node.files else: combined = node.files+node.dirs combined.sort() prefix = options.indent*level #{name} #{size} #{modtime} #{createtime} for item in combined: if options.minsize and (item.size < options.minsize): continue if options.maxsize and (item.size > options.maxsize): continue size = item.size if not options.human else size_to_human(item.size, round=options.rounding) if isinstance(item, Dir): #recurse if not options.nodirs: if options.dirnamebefore: LogUtil.printlog(options.dir.format(name=item.name, path=item.path, size=size, modtime=item.modtime, createtime=item.createtime, prefix=prefix)) printtree(item, options, level+1) if not options.nodirs: if not options.dirnamebefore: LogUtil.printlog(options.dir.format(name=item.name, path=item.path, size=size, modtime=item.modtime, createtime=item.createtime, prefix=prefix)) else: if not options.nofiles: #print stats LogUtil.printlog(options.file.format(name=item.name, path=item.parent.path, size=size, modtime=item.modtime, createtime=item.createtime, prefix=prefix))
for path in paths: drive, rest = splitdrive(path) drive = drives[drive.upper()] drive.stats = True progress = None if options.progress: #allow progress if not rest.lstrip("/\\"): widgets = ["Reading %s" % drive.letter, Percentage(), ' ', Bar(left="[", right="]"), ' ', ETA()] progress = ProgressWrapper(ProgressBar(term_width=consolesize, widgets=widgets, maxval=drive.totalsize-drive.free).start()) else: widgets = ["Reading %s " % drive.letter, AnimatedMarker(), ' ', Timer()] progress = ProgressWrapper(ProgressBar(term_width=consolesize, widgets=widgets, maxval=drive.totalsize-drive.free).start()) start(path, drive, progress) if progress: progress.finish() #do final printing stuff here I guess for drive in sorted(drives.keys()): if drives[drive].stats: d = drives[drive] #{name}{letter}{fs}{free}{totalsize}{serial}{type}{stats}{size} size = d.size if not options.human else size_to_human(d.size) if options.drivehead: LogUtil.printlog(options.drivehead.format(name=d.name, letter=d.letter, fs=d.fs, free=d.free, totalsize=d.totalsize, serial=d.serial, type=d.type, stats=d.stats, size=size, totaldirs=d.totaldirs, totalfiles=d.totalfiles)) printtree(d, options, 0) if options.drivefoot: LogUtil.printlog(options.drivefoot.format(name=d.name, letter=d.letter, fs=d.fs, free=d.free, totalsize=d.totalsize, serial=d.serial, type=d.type, stats=d.stats, size=size, totaldirs=d.totaldirs, totalfiles=d.totalfiles))