查找目录中最大的文件夹

2024-10-03 11:17:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个函数,遍历一个目录树来查找和打印最大的文件夹。你知道吗

我已经写了下面的代码,但不知道是否有一个更有效的方法来做这件事?你知道吗

import os

def biggestFolder(directory):
    folderSize = []
    for folders, subfolders, filenames in os.walk(directory):
        folderSize.append(os.path.getsize(folders))
        maxFolder = max(folderSize)
        if os.path.getsize(folders) == maxFolder:
            return folders



print(biggestFolder('/Users/ryanunderwood/Documents'))

Tags: path方法函数代码import目录文件夹os
2条回答

如果您正在寻找一个最大的文件夹,我不明白为什么您需要os.walk,也就是说,在整个目录中进行累赘的递归搜索。你的父文件夹显然会比里面的文件夹大。另外,os.path.getsize不能用于文件夹,也就是说,这不是递归计算大小,而是只返回文件夹的大小(更多信息here)。你知道吗

为了简洁起见,可以使用pathlib.Path标准库。你知道吗

from pathlib import Path
import operator

root = "/path/to/root/dir/"
p = Path(root)
folder_size_dict = {}

# Iterate through all folders
for subdir in p.iterdir():
    # Calculate recursively the size for each subdir
    subdir_size = sum(f.stat().st_size for f in subdir.glob('**/*') if f.is_file())
    folder_size_dict[subdir] = subdir_size

# Get folder (key) with largest size (value)
largest_folder = max(folder_size_dict.items(), key=operator.itemgetter(1))[0]
print(f"Largest folder: {largest_folder} with size {folder_size_dict[largest_folder]}"

希望这有帮助。你知道吗

对于使用OS命令的linux/mac,您可以使用:

import subprocess
dir = "/home/user/path/"
cmd = f"du -sk {dir}* | sort -n"
out =  subprocess.getoutput(cmd)
print(out.split("\n")[-1])
# 1547380 /home/user/public_html

相关问题 更多 >