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 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
Apr 28 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
华为2019校招笔试题之处理字符串(python版)
Jun 25 Python
python字符串的拼接方法总结
Nov 18 Python
python实现按关键字筛选日志文件
Dec 24 Python
Python 实现一行输入多个数字(用空格隔开)
Apr 29 Python
python函数map()和partial()的知识点总结
May 26 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 Python
python如何将图片转换素描画
Sep 08 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP实现的贪婪算法实例
2017/10/17 PHP
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
JS简单判断是否在微信浏览器打开的方法示例
2019/01/08 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
Python any()函数的使用方法
2019/10/28 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
青春励志演讲稿范文
2014/08/25 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
民事起诉书范本
2015/05/19 职场文书
建党伟业电影观后感
2015/06/01 职场文书
Java spring定时任务详解
2021/10/05 Java/Android
关于python中模块和重载的问题
2021/11/02 Python