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中使用next()方法操作文件的教程
May 24 Python
python如何统计序列中元素
Jul 31 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
python爬取个性签名的方法
Jun 17 Python
Python发展史及网络爬虫
Jun 19 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
Python中常见的数制转换有哪些
May 27 Python
pandas按条件筛选数据的实现
Feb 20 Python
pandas数值排序的实现实例
Jul 25 Python
Python学习之包与模块详解
Mar 19 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
Apache设置虚拟WEB
2006/10/09 PHP
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
Python实现图片添加文字
2019/11/26 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
2014全国两会学习心得体会1000字
2014/03/10 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
七年级作文之雪景
2019/11/18 职场文书