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里大整数相乘相关技巧指南
Sep 12 Python
深入浅析Python字符编码
Nov 12 Python
python 实现红包随机生成算法的简单实例
Jan 04 Python
Python中模块与包有相同名字的处理方法
May 05 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
python之mock模块基本使用方法详解
Jun 27 Python
Tensorflow模型实现预测或识别单张图片
Jul 19 Python
python返回数组的索引实例
Nov 28 Python
Python定时器线程池原理详解
Feb 26 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 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
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
Extjs学习笔记之六 面版
2010/01/08 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
document.write的几点使用心得
2014/05/14 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
wxPython中文教程入门实例
2014/06/09 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
西部世纪面试题
2014/12/05 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
主持人大赛开场白
2015/05/29 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis