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本地与全局命名空间用法实例
Jun 16 Python
Python实现简单的代理服务器
Jul 25 Python
Python socket网络编程TCP/IP服务器与客户端通信
Jan 05 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
解决ROC曲线画出来只有一个点的问题
Feb 28 Python
Django 解决由save方法引发的错误
May 21 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
python如何绘制疫情图
Sep 16 Python
django 认证类配置实现
Nov 11 Python
Python实现猜拳与猜数字游戏的方法详解
Apr 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
初识PHP
2014/09/28 PHP
js option删除代码集合
2008/11/12 Javascript
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
jQuery事件详解
2017/02/23 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python读取网页内容的方法
2015/07/30 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
python递归查询菜单并转换成json实例
2017/03/27 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
财务管理专业毕业生求职信范文
2013/09/21 职场文书
学生学习总结的自我评价
2013/10/22 职场文书
2014年端午节活动方案
2014/03/11 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
建筑横幅标语
2014/10/09 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
雷锋观后感
2015/06/10 职场文书
Redis集群的关闭与重启操作
2021/07/07 Redis
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android