Python如何批量获取文件夹的大小并保存

 更新时间:2020年03月31日 11:57:53   作者:Johnthegreat  
这篇文章主要介绍了Python如何批量获取文件夹的大小并保存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

很多时候,查看一个文件夹下的每个文件大小可以轻易的做到,因为文件后面就是文件尺寸,但是如果需要查看一个文件夹下面所有的文件夹对应的尺寸,就发现需要把鼠标放到对应的文件夹上,稍等片刻才会出结果。

有时候,我们需要查看几十个甚至于上百个文件夹,找出包含文件最多,空间占用最大的那个,就比较麻烦了。这段代码是我以前的代码,可以按大小排序输出文件夹大小到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三种数据结构及13种创建方法总结

    python三种数据结构及13种创建方法总结

    拿Python来说,数据结构的概念也是超级重要,不同的数据结构,有着不同的函数,供我们调用,接下来,我们分别来介绍字符串、列表、字典的创建方法
    2021-09-09
  • GIt在pyCharm的详细使用教程记录

    GIt在pyCharm的详细使用教程记录

    使用git+pycharm有一段时间了,算是稍有点心得,所以下面这篇文章主要给大家介绍了关于GIt在pyCharm的详细使用的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • Python 脚本拉取 Docker 镜像问题

    Python 脚本拉取 Docker 镜像问题

    这篇文章主要介绍了 Python 脚本拉取 Docker 镜像问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • 虚拟环境及venv和virtualenv的区别说明

    虚拟环境及venv和virtualenv的区别说明

    这篇文章主要介绍了虚拟环境及venv和virtualenv的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • pandas如何获取某个数据的行号

    pandas如何获取某个数据的行号

    这篇文章主要介绍了pandas如何获取某个数据的行号问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Pandas中Replace函数使用那些事儿

    Pandas中Replace函数使用那些事儿

    Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,下面这篇文章主要给大家介绍了关于Pandas中Replace函数使用那些事儿,文中通过实例代码以及图文介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • 基于Python快速处理PDF表格数据

    基于Python快速处理PDF表格数据

    这篇文章主要介绍了基于Python快速处理PDF表格数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python利用request库实现翻译接口

    Python利用request库实现翻译接口

    这篇文章主要为大家详细介绍了Python如何利用request库打造自己的翻译接口,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-04-04
  • python获取代理IP的实例分享

    python获取代理IP的实例分享

    今天小编就为大家分享一篇python获取代理IP的实例分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python中八大图像特效算法的示例详解

    Python中八大图像特效算法的示例详解

    图像特效处理是基于图像像素数据特征,将原图像进行一定步骤的计算——例如像素作差、灰度变换、颜色通道融合等,从而达到期望的效果。本文将为大家介绍八种常用的图像特效算法,需要的可以参考一下
    2022-03-03

最新评论