获取文件夹每个文件夹的大小

 如题,获取文件夹每个文件夹的大小

import os
import tkinter as tk
from tkinter import filedialog
from tkinter import ttk

def get_directory_size(path):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(path):
        progress['maximum'] = len(filenames)
        for f in filenames:
            fp = os.path.join(dirpath, f)
            # skip if it is symbolic link
            if not os.path.islink(fp):
                total_size += os.path.getsize(fp)
                # Update the progress bar
                progress['value'] += 1                
                progress.update_idletasks()
    return total_size

def browse_directory():
    path = filedialog.askdirectory()
    if path:
        sizes = {}
        for dirname in next(os.walk(path))[1]:
            dir_path = os.path.join(path, dirname)
            if os.path.isdir(dir_path):
                sizes[dirname] = get_directory_size(dir_path)
        sorted_sizes = sorted(sizes.items(), key=lambda x: x[1], reverse=True)
        for dirname, size in sorted_sizes:
            size_mb = size / (1024 * 1024)
            result_text.insert(tk.END, f"{dirname}: {size_mb:.2f} MB\n")

root = tk.Tk()
root.title("Directory Size Checker")
root.geometry("400x300")
root.resizable(True, True)  # 第一个参数是宽度的布尔值,第二个参数是高度的布尔值

browse_button = tk.Button(root, text="Browse", command=browse_directory)
browse_button.pack()

progress = ttk.Progressbar(root, orient='horizontal', length=200, mode='determinate')
progress.pack()

result_frame = tk.Frame(root)
result_frame.pack(fill='both', expand=True)

result_text = tk.Text(result_frame)
result_text.pack(fill='both', expand=True)

scrollbar = tk.Scrollbar(result_text, command=result_text.yview)
scrollbar.pack(side='right', fill='y')

result_text.config(yscrollcommand=scrollbar.set)

root.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

oceanstonetree

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

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

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

打赏作者

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

抵扣说明:

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

余额充值