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中enumerate函数用法实例分析
May 20 Python
Scrapy爬虫实例讲解_校花网
Oct 23 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 Python
对python判断是否回文数的实例详解
Feb 08 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
python实现文件的分割与合并
Aug 29 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
基于pandas向csv添加新的行和列
May 25 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 Python
Python Matplotlib库实现画局部图
Nov 17 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二分法在IP地址查询中的应用
2008/08/12 PHP
php 魔术方法使用说明
2009/10/20 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python使用append合并两个数组的方法
2015/04/28 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
Python日志模块logging基本用法分析
2018/08/23 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
幼儿园小班植树节活动方案
2014/03/04 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
安全演讲稿大全
2014/05/09 职场文书
Golang解析JSON对象
2022/04/30 Golang
mysql数据库如何转移到oracle
2022/12/24 MySQL
postgresql中如何执行sql文件
2023/05/08 PostgreSQL