huideip 发表于 2024-11-5 23:02

python查看windows文件夹的大小

C盘快满了,想根据文件夹大小判断删掉一些东西,弹窗选择文件夹,获取子文件夹的属性,打印文件夹大小并按照由大至小排名。GPT写的,有问题喷GPT。

import os
import tkinter as tk
from tkinter import filedialog

def get_folder_size(folder_path):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(folder_path):
      for f in filenames:
            fp = os.path.join(dirpath, f)
            if os.path.isfile(fp):
                total_size += os.path.getsize(fp)
    return total_size

def main():
    # 创建Tkinter窗口
    root = tk.Tk()
    root.withdraw()# 隐藏主窗口

    # 弹出文件夹选择对话框
    folder_path = filedialog.askdirectory(title="选择文件夹")

    if folder_path:
      print(f"文件夹: {folder_path}\n")
      
      # 存储子文件夹名称和大小的列表
      folder_sizes = []
      total_size = 0# 用于汇总所有子文件夹的总大小

      # 遍历文件夹中的每个子文件夹
      for subfolder in os.listdir(folder_path):
            subfolder_path = os.path.join(folder_path, subfolder)
            if os.path.isdir(subfolder_path):
                size = get_folder_size(subfolder_path)
                folder_sizes.append((subfolder, size))
                total_size += size# 累加每个子文件夹的大小到总大小
      
      # 按大小排序(从大到小)
      folder_sizes.sort(key=lambda x: x, reverse=True)

      # 打印排序后的结果
      for subfolder, size in folder_sizes:
            print(f"子文件夹: {subfolder} - 大小: {size / (1024 ** 2):.2f} MB")
      
      # 打印汇总信息
      print("\n汇总:")
      print(f"总大小: {total_size / (1024 ** 2):.2f} MB")
    else:
      print("未选择文件夹")

if __name__ == "__main__":
    main()


1045837055lucy 发表于 2024-11-6 14:16

兄台,给你推荐这款软件,方便的多。
Snap2html 2.1.4修改版
https://www.52pojie.cn/thread-1814029-1-1.html
(出处: 吾爱破解论坛)

LightswornSnow 发表于 2024-11-6 19:55

spacesniffer也是很现成直观的工具了

Randle 发表于 2024-11-6 20:53

个人觉得Python的文件读写不如C++方便,Python解释型没C++方便,建议学习C++

huideip 发表于 2024-11-6 22:46

1045837055lucy 发表于 2024-11-6 14:16
兄台,给你推荐这款软件,方便的多。
Snap2html 2.1.4修改版
https://www.52pojie.cn/thread-1814029-1-1 ...

太棒啦。好用多了。感谢~{:1_893:}

huideip 发表于 2024-11-6 22:47

LightswornSnow 发表于 2024-11-6 19:55
spacesniffer也是很现成直观的工具了

涨知识了,谢谢{:1_893:}

pyjiujiu 发表于 2024-11-12 13:39

本帖最后由 pyjiujiu 于 2024-11-12 13:41 编辑

不够优雅阿,可以换个方案

from pathlib import Path
folder_path = Path('.')
list_folder = []
for f in folder_path.glob('*'):
    if not f.is_dir():
      continue
    _size = 0
    for file in f.rglob('*.*'):
      _size += file.stat().st_size
    list_folder.append((f,_size))
final_folder_list = sorted(list_folder,key=lambda x: x,reverse=True)

huideip 发表于 2024-11-14 10:18

pyjiujiu 发表于 2024-11-12 13:39
不够优雅阿,可以换个方案

from pathlib import Path


不愧是大佬~{:1_921:}
页: [1]
查看完整版本: python查看windows文件夹的大小