hustlzp 发表于 2019-1-9 08:42

【Python】【笔记】统计指定目录下每个文件的大小(包括文件夹)

本帖最后由 hustlzp 于 2019-1-9 09:19 编辑

# 使用Python 3运行
import os
# 获取文件夹下的文件大小https://www.jianshu.com/p/a5ec32322fd6
def Get_Dir_Size(dir):
    size = 0
    for root, dirs, files in os.walk(dir):
      size += sum()
    return size

# python 文件大小显示kb、mb或gb等https://blog.csdn.net/mp624183768/article/details/84892999
def Covert_File_Size(size):
    kb = 1024;
    mb = kb * 1024;
    gb = mb * 1024;
    tb = gb * 1024;
    if size >= tb:
      return "%.1fTB" % float(size / tb)
    if size >= gb:
      return "%.1fGB" % float(size / gb)
    if size >= mb:
      return "%.1fMB" % float(size / mb)
    if size >= kb:
      return "%.1fKB" % float(size / kb)

os.chdir(r'C:\Program Files')   #更改当前工作目录

def Print_Size_Of_Current_Dir():
    file_size = dict()# 创建一个空的字典,用来存储我们的结果
    current_work_dir = os.curdir #指代当前目录,在windows系统下是'.'
    # current_work_dir = os.getcwd()   #返回当前工作目录
    all_file = os.listdir(current_work_dir)#用列表列举当前目录中的文件名
    for each_file in all_file:   #依次提取这个列表中的每一个元素(路径)
      if os.path.isdir(each_file) == True:   #判断这个路径是否表示文件夹
            file_size.setdefault(each_file,Covert_File_Size(Get_Dir_Size(each_file)))
      else:# 如果不是文件夹,即是有后缀的那些文件
            file_size.setdefault(each_file, Covert_File_Size(os.path.getsize(each_file)))
    #下面我们来打印结果
    for type_file in file_size:
      print('【%s】:【%s】'%(type_file,file_size))

Print_Size_Of_Current_Dir()



【AMD】:【276.1MB】
【Application Verifier】:【348.7KB】
【ATOMI】:【140.8MB】
【Bandizip】:【18.2MB】
【Beyond Compare 4】:【48.0MB】
【Bluesky Frame Rate Converter】:【2.1MB】
【Bonjour】:【600.7KB】
【Common Files】:【825.5MB】
【DAUM】:【89.0MB】
【desktop.ini】:【None】
【Detong】:【56.6MB】
【Ditto】:【35.5MB】
【Everything】:【2.8MB】
【Honeyview】:【27.0MB】
【internet explorer】:【2.5MB】
【JetBrains】:【741.9MB】
【Just Great Software】:【21.9MB】
【LockHunter】:【7.5MB】
【Logitech Gaming Software】:【318.0MB】
【MATLAB】:【13.7GB】
【Microsoft Analysis Services】:【101.2MB】
【Microsoft Office】:【1.4GB】
【Microsoft SQL Server】:【1.5MB】
【Microsoft VS Code】:【187.3MB】
【Microsoft.NET】:【702.1KB】
【MSBuild】:【25.2KB】
【R】:【194.0MB】
【Realtek】:【46.5MB】
【Reference Assemblies】:【34.9MB】
【rempl】:【26.7MB】
【Rockstar Games】:【99.1MB】
【RStudio】:【488.7MB】
【Uninstall Information】:【None】
【Windows Defender】:【18.6MB】
【Windows Defender Advanced Threat Protection】:【11.3MB】
【Windows Mail】:【620.5KB】
【Windows Media Player】:【4.6MB】
【Windows Multimedia Platform】:【45.5KB】
【windows nt】:【7.5MB】
【Windows Photo Viewer】:【5.9MB】
【Windows Portable Devices】:【45.5KB】
【Windows Security】:【103.7KB】
【Windows Sidebar】:【None】
【WindowsApps】:【None】
【WindowsPowerShell】:【2.5MB】
【Wolfram Research】:【10.4GB】

王星星 发表于 2019-1-9 09:08

hustlzp 发表于 2019-1-9 09:20

我这个搜索的还有点慢,可能是文件夹太大(超过30G),往下深入的层数较多导致。
后期我看能不能再优化下

kmwell 发表于 2019-1-9 09:27

支持一下

li231475 发表于 2019-1-9 09:39

这个功能的难点,应该是遍历文件下的子文件夹吧

sitiger 发表于 2019-1-9 09:40

os.path.getsize()?

cccdyl 发表于 2019-1-9 10:29

支持和鼓励在论坛中交流学习体会

gunxsword 发表于 2019-1-9 11:00

感谢分享,收下了
页: [1]
查看完整版本: 【Python】【笔记】统计指定目录下每个文件的大小(包括文件夹)