如何获取目录及其所有子目录中全部文件的名称与大小?
解决方法
原代码的问题在于只执行了一次next(walk_method),仅获取了当前目录的内容,没有完整遍历os.walk生成的所有目录项;同时手动计算子目录大小的逻辑也没有深入遍历嵌套子目录,无法获取所有层级的文件信息。
下面是修正后的代码,可遍历当前目录及所有子目录的文件,输出每个文件的完整路径和大小:
import os path = os.getcwd() size_of_file = [] # 递归遍历当前目录及所有子目录 for root, _, files in os.walk(path): for file in files: file_path = os.path.join(root, file) # 获取文件字节大小 file_size = os.stat(file_path).st_size size_of_file.append((file_path, file_size)) # 按文件大小排序后输出 for file_path, size in sorted(size_of_file, key=lambda x: x[1]): print(f"{file_path} : {round(size/(1024*1024), 3)}MB")
代码说明
os.walk(path)会自动递归遍历目标路径下的所有层级目录,每次返回三个值:当前目录的完整路径root、当前目录下的子目录列表、当前目录下的文件列表。- 遍历每个目录下的文件,拼接出完整文件路径,获取大小后存入列表。
- 最后按文件大小排序,将字节转换为MB格式并保留3位小数输出。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

