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 布尔操作实现代码
Mar 23 Python
零基础写python爬虫之urllib2使用指南
Nov 05 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
详解python中的json和字典dict
Jun 22 Python
python简单操作excle的方法
Sep 12 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 Python
Python测试框架pytest高阶用法全面详解
Jun 01 Python
Django框架中表单的用法
Jun 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常用image图像函数集
2013/06/24 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
childNodes.length与children.length的区别
2009/05/14 Javascript
简单的js表单验证函数
2013/10/28 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
详解jquery和vue对比
2019/04/16 jQuery
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
简单介绍Python中的RSS处理
2015/04/13 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
python中shell执行知识点
2020/05/06 Python
python redis存入字典序列化存储教程
2020/07/16 Python
python 实现波浪滤镜特效
2020/12/02 Python
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
技校毕业生个人学习的自我评价
2014/02/21 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
环境卫生整治简报
2015/07/20 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
Python加密与解密模块hashlib与hmac
2022/06/05 Python