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读写Redis数据库操作示例
Mar 18 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
Python中list初始化方法示例
Sep 18 Python
Python决策树和随机森林算法实例详解
Jan 30 Python
Python安装模块的常见问题及解决方法
Feb 05 Python
Django跨域请求问题的解决方法示例
Jun 16 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
Django 拆分model和view的实现方法
Aug 16 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
基于Python脚本实现邮件报警功能
May 20 Python
Python grequests模块使用场景及代码实例
Aug 10 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
php 数组的指针操作实现代码
2011/02/08 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
yii用户注册表单验证实例
2015/12/26 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
vue实现评价星星功能
2020/06/30 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
Python开发常用的一些开源Package分享
2015/02/14 Python
python 异常处理总结
2016/10/18 Python
python基础教程项目二之画幅好画
2018/04/02 Python
python 内置模块详解
2019/01/01 Python
简单了解python中的与或非运算
2019/09/18 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
C#笔试题集合
2013/06/21 面试题
清明节网上祭英烈活动总结
2014/04/30 职场文书
团员个人总结
2015/02/26 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
房屋维修申请报告
2015/05/18 职场文书
欠条样本
2015/07/03 职场文书
学校教师培训工作总结
2015/10/14 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android