Python代码:找出Windows中所有大于100MB的文件
import os
def find_large_files(directory, min_size_mb=100):
"""
查找指定目录及其子目录中所有大于指定大小的文件
参数:
directory (str): 要搜索的目录路径
min_size_mb (int): 最小文件大小(MB),默认为100MB
返回:
list: 包含符合条件的文件路径和大小的元组列表
"""
min_size_bytes = min_size_mb * 1024 * 1024 # 将MB转换为字节
large_files = []
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
try:
file_size = os.path.getsize(file_path)
if file_size > min_size_bytes:
file_size_mb = file_size / (1024 * 1024)
large_files.append((file_path, file_size_mb))
except (OSError, PermissionError):
# 跳过无法访问的文件
continue
# 按文件大小从大到小排序
large_files.sort(key=lambda x: x[1], reverse=True)
return large_files
def main():
# 从用户获取要搜索的目录,默认为所有驱动器
search_dirs = []
# 获取Windows所有驱动器
import string
drives = ['%s:\\' % d for d in string.ascii_uppercase if os.path.exists('%s:' % d)]
print("开始搜索大于100MB的文件...")
print(f"将在以下驱动器搜索: {', '.join(drives)}")
all_large_files = []
for drive in drives:
print(f"\n正在搜索 {drive} ...")
large_files = find_large_files(drive)
all_large_files.extend(large_files)
# 输出结果
print("\n搜索结果:")
print(f"共找到 {len(all_large_files)} 个大于100MB的文件")
print("\n文件路径\t\t\t\t大小(MB)")
print("-" * 80)
for file_path, size_mb in all_large_files:
print(f"{file_path}\t\t{size_mb:.2f}MB")
if __name__ == "__main__":
main()
代码说明
-
函数功能:
find_large_files()
: 递归搜索指定目录及其子目录,找出所有大于指定大小的文件main()
: 主函数,获取Windows所有驱动器并逐个搜索
-
主要特点:
- 自动检测Windows所有可用驱动器
- 跳过无法访问的文件(权限问题)
- 结果按文件大小从大到小排序
- 显示文件路径和大小(MB)
-
使用方法:
- 直接运行脚本即可
- 可以修改
min_size_mb
参数来改变最小文件大小阈值 - 可以修改
search_dirs
来指定特定目录而非所有驱动器
-
注意事项:
- 首次运行可能需要较长时间,特别是硬盘上有大量文件时
- 需要管理员权限才能访问某些系统目录