All pastes #834915 Raw Edit

Stuff

public python v1 · immutable
#834915 ·published 2007-12-28 15:50 UTC
rendered paste body
#!/usr/bin/env python## Well this is a bloody kickass little app which tells you things which could# really be obtained elsewhere, but what are you going to do 'eh! It walks a# directory structure and collects the number of files, as well as their size,# then prints whichever data you like. bla bla bla! The root directory will be# the current working diectory unless you specify another location with the -d# switch (good idea). One important thing to note is that data is easy to read# because it will tell you what the numbers are for, except when using the -r# switch which just spits the numbers out seperated by a space. In this case# the numbers are in the same order.#import getoptimport sysimport osimport datetime# Settings.ShowTimestamp = FalseShowDirCount = FalseShowFileCount = FalseShowAverageFileSize = FalseShowTotalFileSize = FalseRootDir = os.getcwd()ShowRaw = Falsedef Traverse(Path):	# Working values.	global FileCount	global DirCount	global TotalFileSize	# Get all children.	try:		Children = os.listdir(Path)	except OSError, (errno, strerror):		return	for Child in Children:		if os.path.isdir(Path + '/' + Child):			DirCount += 1			Traverse(Path + '/' + Child)		elif os.path.isfile(Path + '/' + Child):			FileCount += 1			TotalFileSize += os.path.getsize(Path + '/' + Child)def GetTimestamp():	if ShowTimestamp:		return datetime.datetime.now()	else:		return Nonedef GetDirCount():	if ShowDirCount:		return DirCount	else:		return Nonedef GetFileCount():	if ShowFileCount:		return FileCount	else:		return Nonedef GetAverageFileSize():	if ShowAverageFileSize:		return TotalFileSize / FileCount	else:		return Nonedef GetTotalFileSize():	if ShowTotalFileSize:		return TotalFileSize	else:		return Nonedef Usage():	print 'some day this app will be cool enough to have a usage description!'# Set initial global values.FileCount = 0DirCount = 0TotalFileSize = 0# Get commandline parameters and make sure they are valid.try:	opts, args = getopt.getopt(sys.argv[1:], "d:tcfraoah", ["dir=", "timestamp", "circount", "filecount", "raw", "avgfilesize", "totalfilesize", "all", "help"])except getopt.GetoptError:	Usage()	sys.exit()# Set application options.for o, a in opts:		if o in ("-d", "--dir"):			RootDir = a		if o in ("-t", "--timestamp"):			ShowTimestamp = True		if o in ("-c", "--dircount"):			ShowDirCount = True		if o in ("-f", "--filecount"):			ShowFileCount = True		if o in ("-r", "--raw"):			ShowRaw = True		if o in ("-a", "--avgfilesize"):			ShowAverageFileSize = True		if o in ("-o", "--totalfilesize"):			ShowTotalFileSize = True		if o in ("-a", "--all"):			ShowTimestamp = True			ShowDirCount = True			ShowFileCount = True			ShowAverageFileSize = True			ShowTotalFileSize = True		if o in ("-h", "--help"):			Usage()			sys.exit()# Must not have trailing slash!Traverse(RootDir)def PrintResults():	if ShowRaw:		print "%s %s %s %s %s" % (GetTimestamp(), GetDirCount(), GetFileCount(), GetAverageFileSize(), GetTotalFileSize())	else:		print """Timestamp = %sDirectory Count = %sFile Count = %sAverage File Size = %sTotal File Size = %s""" % (GetTimestamp(), GetDirCount(), GetFileCount(), GetAverageFileSize(), GetTotalFileSize())PrintResults()