在日常工作中,我们经常需要了解文件夹的大小以及其中最大文件和文件夹的详细信息。本文将介绍如何使用 Python 编写一个脚本,遍历指定文件夹及其子文件夹,计算总大小,并找出最大文件和文件夹。我们将使用 os
模块来实现这一功能。
需求分析
我们的目标是编写一个 Python 脚本,实现以下功能:
- 遍历指定文件夹及其子文件夹。
- 计算所有文件和文件夹的总大小。
- 找出最大的文件及其大小。
- 找出最大的子文件夹及其大小。
使用的 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))
运行结果
总结
这段代码实现了以下功能:
- 遍历指定文件夹及其子文件夹:使用
os.walk
函数遍历目录树,并获取目录路径、目录名和文件名。 - 计算所有文件和文件夹的总大小:使用
os.path.getsize
函数获取文件大小,并累加到总大小中。 - 找出最大的文件及其大小:在遍历过程中,检查每个文件并更新最大文件大小和路径。
- 找出最大的子文件夹及其大小:在遍历过程中,更新最大文件夹大小和路径。
扩展
-
进程过滤和搜索:
- 添加一个搜索框,允许用户根据文件名或文件夹名过滤结果。
-
详细信息显示:
- 显示更多文件和文件夹的详细信息,如创建时间、修改时间等。
-
多语言支持:
- 使用翻译功能,支持多语言界面。
-
图形用户界面:
- 使用 PyQt 或 Tkinter 创建一个图形用户界面,使用户操作更加直观。
相关类型扩展
-
系统监控工具:
- 扩展为一个更全面的系统监控工具,显示磁盘使用情况、文件系统健康状态等。
-
远程文件管理器:
- 实现远程文件管理功能,允许用户管理远程计算机上的文件和文件夹。
-
文件备份工具:
- 添加功能,允许用户备份指定文件夹及其子文件夹。
-
文件同步工具:
- 实现文件同步功能,确保多个设备上的文件夹内容一致。
爬虫项目推荐
- 使用 Python 指定内容 爬取百度引擎搜索结果-CSDN博客
- 使用Python和Selenium爬取QQ新闻热榜-CSDN博客
- 使用Selenium 和 Python 抓取快手网页大量评论-CSDN博客
- 使用 Python 和 Selenium 爬取快手视频 附源码-CSDN博客
- 如何使用Python、Selenium 爬取酷狗音乐网站的歌曲信息-CSDN博客
- 使用Python 和 Selenium 抓取 酷狗 音乐专辑 附源码-CSDN博客
其他项目推荐
- 使用 TensorFlow 和 CIFAR-10 数据集进行图像分类-CSDN博客
- 在 Python 中编写一个简单的文件搜索工具-CSDN博客
- 使用Python从.exe文件中提取图标_提取文件图标-CSDN博客
- Python 文件搜索程序详解与实现-CSDN博客
- 使用Python 进行文本情感分析-CSDN博客
- 使用 Python和PyQt5 打造 你的专属文件查询工具! 附源码-CSDN博客
- 用Python和PyQt5打造你的专属音乐播放器!轻松创建带封面的音乐列表-CSDN博客
结论
这段代码提供了一个简单但有效的方法来计算文件夹的总大小,并找出其中最大的文件和文件夹。通过使用 os
模块,我们可以轻松地遍历目录树,并获取所需的信息。这对于需要管理和监控文件系统的应用程序非常有用。
欢迎在评论区留言。继续探索和学习,祝你在深度学习的旅程中取得更多的成果!🚀
希望这个博客对你有所帮助!如果你有任何问题需要进一步的指导,请随时提问。继续加油! 🚀