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 self,cls,decorator的理解
Jul 13 Python
跟老齐学Python之Python安装
Sep 12 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
基于pycharm实现批量修改变量名
Jun 02 Python
python 实现两个npy档案合并
Jul 01 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
Python基础详解之邮件处理
Apr 28 Python
详解python网络进程
Jun 15 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中文本操作的类
2007/03/17 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
实例讲解PHP表单处理
2019/02/15 PHP
基于jquery的模态div层弹出效果
2010/08/21 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
js实现碰撞检测
2021/01/29 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
详解python datetime模块
2020/08/17 Python
京东国际站:JOYBUY
2017/11/23 全球购物
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
Oracle的内存结构(Memory structures)
2015/06/10 面试题
内科护士实习自我鉴定
2013/10/17 职场文书
春节活动策划方案
2014/01/24 职场文书
学校创先争优活动总结
2014/08/28 职场文书
邀请函格式范文
2015/02/02 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
python如何在word中存储本地图片
2021/04/07 Python
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js