Python如何批量获取文件夹的大小并保存


Posted in Python onMarch 31, 2020

很多时候,查看一个文件夹下的每个文件大小可以轻易的做到,因为文件后面就是文件尺寸,但是如果需要查看一个文件夹下面所有的文件夹对应的尺寸,就发现需要把鼠标放到对应的文件夹上,稍等片刻才会出结果。

有时候,我们需要查看几十个甚至于上百个文件夹,找出包含文件最多,空间占用最大的那个,就比较麻烦了。这段代码是我以前的代码,可以按大小排序输出文件夹大小到txt文件,供使用的方便。

格式化当时花了很长时间,最后发现使用‘YaHei.Consolas'字体可以解决,对齐后输出结果看起来还算舒服。

上代码:

import os
import datetime
 
 
def get_folder_size(path):
  folder_size = 0
 
  if not os.path.exists(path):
    return folder_size
 
  if os.path.isfile(path):
    folder_size = os.path.getsize(path)
    return folder_size
  try:
    if os.path.isdir(path):
      with os.scandir(path) as directory_lists:
        for directory_list in directory_lists:
          if directory_list.is_dir():
            sub_folder_size = get_folder_size(directory_list.path) # 递归获取大小
            folder_size += sub_folder_size
          elif directory_list.is_file():
            file_size = os.path.getsize(directory_list.path)
            folder_size += file_size
 
        return folder_size
  except:
    pass
 
 
# 以下主要是为了格式化输出
def get_file_length(file_name):
  characters = list(file_name)
  ascii_length = 0
  utf8_length = 0
 
  for character in characters:
    if ord(character) < 128:
      ascii_length += 1
    else:
      utf8_length += 2
 
  return ascii_length + utf8_length
 
 
def main(basedir):
  with os.scandir(basedir) as dirs:
    directory_size = []
    for dir in dirs:
      try:
        if not dir.is_file():
          dirsize = round(get_folder_size(dir.path) / 1000000) # return the file size in Mb
          resformat = [dir.name, dirsize]
          directory_size.append(resformat)
      except:
        pass
    results = sorted(directory_size, key=lambda x: x[1], reverse=True) # return a list ordered by size
    results = [[i[0], '文件夹大小:' + str(i[1]) + ' Mb'] for i in results]
 
    with open(basedir + os.sep + datetime.date.today().isoformat() + '.txt', 'a+') as f:
      for result in results:
        # 按照50的宽度格式化输出结果
        len1 = 50 - get_file_length(result[0]) + len(result[0])
        len2 = 25 - get_file_length(result[1]) + len(result[1])
        f.writelines('{:<{len1}s} {:>{len2}s}\n'.format(result[0], result[1], len1=len1, len2=len2))
      print('The result was successfully saved in the directory with date as file name.')
 
 
if __name__ == "__main__":
  basedir = input("Please input the directory you would like to know the sizes: ")
  main(basedir)

如果输入相应的文件夹路径,输出结果如下:

Python如何批量获取文件夹的大小并保存

Python如何批量获取文件夹的大小并保存

有时间我再简化一下代码,目前先这样。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python中的cookielib模拟登录网站
Apr 09 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
Jun 15 Python
简单谈谈python中的语句和语法
Aug 10 Python
Python实现学生成绩管理系统
Apr 05 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
Python Json数据文件操作原理解析
May 09 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 #Python
django实现模板中的字符串文字和自动转义
Mar 31 #Python
Python使用graphviz画流程图过程解析
Mar 31 #Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 #Python
基于python实现计算且附带进度条代码实例
Mar 31 #Python
Django values()和value_list()的使用
Mar 31 #Python
利用python实现凯撒密码加解密功能
Mar 31 #Python
You might like
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
jQuery中next方法用法实例
2015/04/24 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
python3学习之Splash的安装与实例教程
2018/07/09 Python
python框架中flask知识点总结
2018/08/17 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
毕业求职自荐信格式是什么
2013/11/19 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
竞选村长演讲稿
2014/04/28 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript