次の関数を使用して、システム内のすべてのファイル サイズをターゲット ディレクトリから取得しています。
def get_files(target):
# Get file size and modified time for all files from the target directory and down.
# Initialize files list
filelist = []
# Walk the directory structure
for root, dirs, files in os.walk(target):
# Do not walk into directories that are mount points
dirs[:] = filter(lambda dir: not os.path.ismount(os.path.join(root, dir)), dirs)
for name in files:
# Construct absolute path for files
filename = os.path.join(root, name)
# Test the path to account for broken symlinks
if os.path.exists(filename):
# File size information in bytes
size = float(os.path.getsize(filename))
# Get the modified time of the file
mtime = os.path.getmtime(filename)
# Create a tuple of filename, size, and modified time
construct = filename, size, str(datetime.datetime.fromtimestamp(mtime))
# Add the tuple to the master filelist
filelist.append(construct)
return(filelist)
これを変更して、ディレクトリとディレクトリの合計サイズを含む 2 番目のリストを含めるにはどうすればよいですか? ディレクトリ情報とサイズを取得するために別の関数で 2 回目のウォークを実行するよりも効率的になるように、この操作を 1 つの関数に含めようとしています。
アイデアは、上位 20 の最大ファイルのソートされたリストと、上位 10 の最大ディレクトリの 2 番目のソートされたリストでレポートを返すことができるようにすることです。
皆さんの提案に感謝します。