使用 Python 计算文件夹大小并找到最大文件和文件夹 附源码

在日常工作中,我们经常需要了解文件夹的大小以及其中最大文件和文件夹的详细信息。本文将介绍如何使用 Python 编写一个脚本,遍历指定文件夹及其子文件夹,计算总大小,并找出最大文件和文件夹。我们将使用 os 模块来实现这一功能。

需求分析

我们的目标是编写一个 Python 脚本,实现以下功能:

  1. 遍历指定文件夹及其子文件夹。
  2. 计算所有文件和文件夹的总大小。
  3. 找出最大的文件及其大小。
  4. 找出最大的子文件夹及其大小。
使用的 Python 模块

我们将使用 os 模块来进行文件和目录操作。os.walk 函数可以帮助我们遍历目录树,并获取目录路径、目录名和文件名。os.path.getsize 函数用于获取文件大小。

 代码详解

1. 导入模块

  
 

 import os


   

   我们首先导入了 `os` 模块,用于文件和目录操作。

2. 定义 `get_folder_size` 函数

   def get_folder_size(folder_path):
       total_size = 0
       max_file_size = 0
       max_file = ""
       max_folder_size = 0
       max_folder = ""


   

   初始化总大小、最大文件大小、最大文件路径、最大文件夹大小和最大文件夹路径。

3. 遍历目录树

   for dirpath, dirnames, filenames in os.walk(folder_path):
       folder_size = sum(os.path.getsize(os.path.join(dirpath, filename)) for filename in filenames)
       total_size += folder_size


   

   使用 `os.walk` 遍历目录树,计算每个目录的大小并累加到总大小中。

4. 更新最大文件夹和文件信息

   if folder_size > max_folder_size:
       max_folder_size = folder_size
       max_folder = dirpath

   for filename in filenames:
       file_size = os.path.getsize(os.path.join(dirpath, filename))
       if file_size > max_file_size:
           max_file_size = file_size
           max_file = os.path.join(dirpath, filename)


   

   在遍历过程中,更新最大文件夹大小和路径,检查每个文件并更新最大文件大小和路径。

5. 返回结果

   return total_size, max_file, max_folder, max_folder_size


   

   返回总大小、最大文件路径、最大文件夹路径和最大文件夹大小。

6. 定义 `convert_bytes_to_readable` 函数

   def convert_bytes_to_readable(size_in_bytes):
       units = ['B', 'KB', 'MB', 'GB', 'TB']
       unit_index = 0
       while size_in_bytes >= 1024 and unit_index < len(units) - 1:
           size_in_bytes /= 1024
           unit_index += 1
       return "{:.2f} {}".format(size_in_bytes, units[unit_index])
   

   将字节大小转换为可读格式(B、KB、MB、GB、TB)。

7. 测试脚本

   folder_path = r'C:\Users\admin\desktop'
   total_size, max_file, max_folder, max_folder_size = get_folder_size(folder_path)

   print("所有文件和文件夹的总大小:", convert_bytes_to_readable(total_size))
   print("最大的文件:", max_file, "大小:", convert_bytes_to_readable(os.path.getsize(max_file)))
   print("最大的文件夹:", max_folder, "大小:", convert_bytes_to_readable(max_folder_size))


 

   指定文件夹路径,调用 `get_folder_size` 函数并打印结果。

代码实现

以下是完整的代码实现:

import os

def get_folder_size(folder_path):
    total_size = 0
    max_file_size = 0
    max_file = ""
    max_folder_size = 0
    max_folder = ""

    # 遍历目录及子目录
    for dirpath, dirnames, filenames in os.walk(folder_path):
        # 计算目录大小
        folder_size = sum(os.path.getsize(os.path.join(dirpath, filename)) for filename in filenames)
        total_size += folder_size

        # 更新最大目录大小和目录名
        if folder_size > max_folder_size:
            max_folder_size = folder_size
            max_folder = dirpath

        # 计算并更新最大文件大小和文件名
        for filename in filenames:
            file_size = os.path.getsize(os.path.join(dirpath, filename))
            if file_size > max_file_size:
                max_file_size = file_size
                max_file = os.path.join(dirpath, filename)

    return total_size, max_file, max_folder, max_folder_size

def convert_bytes_to_readable(size_in_bytes):
    units = ['B', 'KB', 'MB', 'GB', 'TB']
    unit_index = 0
    while size_in_bytes >= 1024 and unit_index < len(units) - 1:
        size_in_bytes /= 1024
        unit_index += 1
    return "{:.2f} {}".format(size_in_bytes, units[unit_index])

folder_path = r'C:\Users\admin\desktop'
total_size, max_file, max_folder, max_folder_size = get_folder_size(folder_path)

print("所有文件和文件夹的总大小:", convert_bytes_to_readable(total_size))
print("最大的文件:", max_file, "大小:", convert_bytes_to_readable(os.path.getsize(max_file)))
print("最大的文件夹:", max_folder, "大小:", convert_bytes_to_readable(max_folder_size))

 运行结果

总结

这段代码实现了以下功能:

  1. 遍历指定文件夹及其子文件夹:使用 os.walk 函数遍历目录树,并获取目录路径、目录名和文件名。
  2. 计算所有文件和文件夹的总大小:使用 os.path.getsize 函数获取文件大小,并累加到总大小中。
  3. 找出最大的文件及其大小:在遍历过程中,检查每个文件并更新最大文件大小和路径。
  4. 找出最大的子文件夹及其大小:在遍历过程中,更新最大文件夹大小和路径。

扩展

  1. 进程过滤和搜索

    • 添加一个搜索框,允许用户根据文件名或文件夹名过滤结果。
  2. 详细信息显示

    • 显示更多文件和文件夹的详细信息,如创建时间、修改时间等。
  3. 多语言支持

    • 使用翻译功能,支持多语言界面。
  4. 图形用户界面

    • 使用 PyQt 或 Tkinter 创建一个图形用户界面,使用户操作更加直观。

相关类型扩展

  1. 系统监控工具

    • 扩展为一个更全面的系统监控工具,显示磁盘使用情况、文件系统健康状态等。
  2. 远程文件管理器

    • 实现远程文件管理功能,允许用户管理远程计算机上的文件和文件夹。
  3. 文件备份工具

    • 添加功能,允许用户备份指定文件夹及其子文件夹。
  4. 文件同步工具

    • 实现文件同步功能,确保多个设备上的文件夹内容一致。

   爬虫项目推荐

    其他项目推荐

结论

这段代码提供了一个简单但有效的方法来计算文件夹的总大小,并找出其中最大的文件和文件夹。通过使用 os 模块,我们可以轻松地遍历目录树,并获取所需的信息。这对于需要管理和监控文件系统的应用程序非常有用。

欢迎在评论区留言。继续探索和学习,祝你在深度学习的旅程中取得更多的成果!🚀


希望这个博客对你有所帮助!如果你有任何问题需要进一步的指导,请随时提问。继续加油! 🚀

  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIY若依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值