[Python] 纯文本查看 复制代码import os
import math
import pandas as pd
import datetime
# -*- coding: utf-8 -*-
# @Time : 2024/05/22
# @AuThor : fengjicheng
# @file : scan_disk_size.py
# @Software: 根据层级统计文件夹
def get_drives():
"""获取Windows系统中的所有盘符"""
drives = []
for letter in 'F':
if os.path.exists(letter + ':\\'):
drives.append(letter + ':\\')
return drives
def dfs_calculate_dir_size_and_export_to_excel(dir_path='.', current_depth=0, max_depth=4, excel_writer=None, sheet_name=None):
"""递归计算指定目录的总大小,并将结果输出到单个Excel文件的不同工作表中。控制搜索深度。
:param dir_path: 要计算大小的目录路径,默认为当前目录
:param current_depth: 当前递归深度,默认为0
:param max_depth: 最大递归深度,默认为4
:param excel_writer: ExcelWriter对象,用于写入数据
:param sheet_name: Excel的sheet名称
:return: None
"""
try:
# 如果到达最大深度,则计算目录和文件的大小
for entry in os.scandir(dir_path):
# 如果为回收站 和系统模块则跳过
if entry.name in ['System Volume Information', '$Recycle.Bin','$RECYCLE.BIN','$360Honeypot']:
continue
row_data = {
'盘符': dir_path.split(':')[0],
'是否为文件夹':'是' if not entry.is_file() else '否',
'文件路径': entry.path,
'文件大小': getFileFolderSize(entry.path) if not entry.is_file() else entry.stat().st_size,
'友好的文件大小': '',
'搜索层级': current_depth
}
row_data['友好的文件大小'] = convert_size(row_data['文件大小'])
df = pd.DataFrame([row_data])
if excel_writer is not None and sheet_name is not None:
if sheet_name not in excel_writer.sheets:
df.to_excel(excel_writer, sheet_name=sheet_name, index=False, header=True)
else:
df.to_excel(excel_writer, sheet_name=sheet_name, index=False, header=False, startrow=excel_writer.sheets[sheet_name].max_row)
if entry.is_dir() and current_depth
扫描文件夹,并把文件夹大小保存到excel中