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中的map、reduce和filter浅析
Apr 26 Python
Python对两个有序列表进行合并和排序的例子
Jun 13 Python
Python列表生成器的循环技巧分享
Mar 06 Python
Python OpenCV获取视频的方法
Feb 28 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
python画图系列之个性化显示x轴区段文字的实例
Dec 13 Python
Numpy之random函数使用学习
Jan 29 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
解决pycharm安装第三方库失败的问题
May 09 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 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生成缩略图的类代码
2008/10/02 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
Python设计密码强度校验程序
2020/07/30 Python
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
学期自我鉴定
2013/11/04 职场文书
财务管理个人自荐书范文
2013/11/24 职场文书
KTV的创业计划书范文
2014/02/02 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
学校食堂标语
2014/10/06 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
vue基于Teleport实现Modal组件
2021/05/31 Vue.js
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
MYSQL常用函数介绍
2022/05/05 MySQL