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 相关文章推荐
Django REST为文件属性输出完整URL的方法
Dec 18 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
django 简单实现登录验证给你
Nov 06 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
Python3 元组tuple入门基础
Feb 09 Python
Python telnet登陆功能实现代码
Apr 16 Python
520使用Python实现“我爱你”表白
May 20 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
python设置表格边框的具体方法
Jul 17 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
python库sklearn常用操作
Aug 23 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面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
php 生成短网址原理及代码
2014/01/23 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
python实现比较两段文本不同之处的方法
2015/05/30 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
python生成二维码的实例详解
2017/10/29 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
大学生四年生活自我鉴定
2013/11/21 职场文书
创业计划书中包含的9个方面
2013/12/26 职场文书
初一英语教学反思
2014/01/11 职场文书
2014年国培研修感言
2014/03/09 职场文书
幼儿园家长寄语
2014/04/02 职场文书
环保建议书600字
2014/05/14 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python
Oracle使用别名的好处
2022/04/19 Oracle