一个检查文件夹下文件大小的小程序

本文介绍了一个使用Python实现的功能:从指定盘符或文件夹中扫描文件,按照文件大小从大到小排序,并将结果输出到桌面的文本文件中。通过调用Python的文件操作、线程、Tkinter库,实现了高效且直观的文件大小排序与日志生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

"选择盘符或选择文件夹,在桌面生成Log文件,将选择目录下文件按由大到小排列"

import os
from tkinter import *
from tkinter.ttk import *
from tkinter.filedialog import *
import threading

filelist = []

def formatSize(size, is1024=True):
    "格式化文件大小"
    formatUnit = {1024: ['KB', 'MB', 'GB', 'TB'], 1000: ['KiB', 'MiB', 'GiB', 'TiB']}
    block = 1024 if is1024 else 1000
    for unit in formatUnit[block]:
        size /= block
        if size < block:
            return "{0:.2f}{1}".format(size, unit)
    raise ValueError('文件过大')

def scanDir(beginPath='E:\\'):
    # print('Current Path: {}'.format(beginPath))
    try:
        for item in os.scandir(beginPath):
            if item.is_file():
                path = os.path.join(beginPath, item.name)
                # print('当前文件: {}'.format(path))
                size = item.stat().st_size
                filelist.append([path, size])
            else:
                # pass
                path = os.path.join(beginPath, item.name)
                # print("目录: {}".format(path))
                scanDir(path)
    except PermissionError:
        print('访问拒绝:{}'.format(beginPath))

def outPut(logPath=os.path.join(os.path.expanduser('~'),'Desktop','log.txt')):
    newlist = sorted(filelist, key=lambda x:x[1], reverse=True)
    with open(logPath,'w') as f:
        f.write("{:>6}   {}\n".format("大小","路径"))
        for file in newlist:
            f.write("{:>10} {}\n".format(formatSize(file[1]),file[0]))

def test():
    scanDir()
    outPut()


def main():
    def func(getpath):
        scanDir(getpath)
        outPut()
        print('文件搜索完成')
    def showMsg(*args):
        basePath = {"C": "C:\\", "D": "D:\\", "E": "E:\\", "F": "F:\\"}
        root.update()
        threading.Thread(target=func,args=(basePath[path.get()],)).start()
        return
    def go(*args):
        threading.Thread(target=func, args=(enter.get(),)).start()
        return
    def search(*args):
        enter.set(askdirectory())
    root = Tk()
    root.title("文件大小查看")
    path = StringVar()
    selectPath = Combobox(root, textvariable=path, values=["C","D","E","F"])
    selectPath.current(0)
    checkbtn = Button(root,text="Go",command=go)
    enter = StringVar()
    enterPath = Button(root, textvariable=enter, command=search)
    enter.set("请选择一个文件夹")
    selectPath.bind("<<ComboboxSelected>>", showMsg)
    selectPath.pack(fill=X)
    enterPath.pack(side="left")
    checkbtn.pack(fill=X)
    root.mainloop()

if __name__=="__main__":
    main()







folder Size是最好的一个文件夹大小浏览工具了,可以拖入文件夹,操作方便 folder Size是一款用于系统硬盘查看对比的工具,它可以帮助你查看系统中的磁盘文件使用状态,同时支持显示每个磁盘的文件和文件夹所占用空间的大小百分比,让你更加直观的了解您的磁盘空间分配情况。此工具拥有简洁的操作界面,拥有快速的扫描功能,仅需要几分钟的时间就可以检测完成。 功能特色: 查找并显示所有文件和文件夹大小。 扫描整个存储设备或选择的文件夹。 在不同的图表-柱状图,饼图显示文件和文件夹的大小等 在表中列出所有文件和文件夹的详细信息: 名称 文件夹大小 从父文件夹的大小的百分比的大小 文件夹数 子文件夹数 创建时间 上次修改时间 上次访问时间文件夹的所有者和组 上述排序选项列出所有不同的标准- 基于文件夹的名称,文件夹大小等 重新排列的选项列表中的列,以适应您的偏好。 找到Windows资源管理器中选择通过上下文菜单文件夹或文件 删除文件夹或文件。 相关的应用程序打开文件使用双击。 对于所有类型的存储设备支持 -硬盘驱动器,光驱,usb驱动器,软盘 简易资源管理器风格的导航通过后退,前进和文件夹向上工具按钮 使用方法: 1、下载Folder Size软件,安装。 2、软件安装完成以后,自动与Windows资源管理器集成在一起。以Windows XP为例,打开资源管理器,单击“查看→详细信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值