The report() function generates
the portion of the report for one directory subtree. The
path name to the subtree is its argument.
# - - - r e p o r t - - -
def report ( dirName ):
"""Generate the report for one directory subtree.
[ dirName is a string ->
sys.stdout +:= a report listing the files below
directory (dirName), with files in descending
order by size ]
"""
This function has only three steps: write a report
heading; instantiate the BigReport object containing the report data; and call that
object's .genFiles() method to
generate the lines of the report.
Each report starts with a line showing the name of the
subtree's starting directory. This uses Python's os.path.realpath() function, which resolves soft
links and relative path names to the actual absolute path
name.
We also set basePath to the absolute path
name corresponding to dirName. This
is necessary to the BigReport object so
that it can display each file's path name relative to
that base directory. For this, we use the os.path.abspath() function, which does not
replace soft links with their real locations.
#-- 1 -
# [ basePath := dirName's absolute path name
# sys.stdout +:= report heading showing dirName's real
# absolute path ]
basePath = os.path.abspath ( dirName )
print "\n === %s ===" % os.path.realpath ( dirName )
#-- 2 --
# [ bigReport := a BigReport object describing all the
# accessible files in directory tree (dirName) ]
bigReport = BigReport ( basePath )
#-- 3 --
# [ bigReport is a BigReport object ->
# sys.stdout +:= lines describing files in bigReport
# in descending order by size ]
for bigInfo in bigReport.genFiles():
print bigInfo