当前位置: 首页 > news >正文

python读取文件大小_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)

如果输入相应的文件夹路径,输出结果如下:

202003311156541.jpg

202003311156542.jpg

有时间我再简化一下代码,目前先这样。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章:

  • python ocr高精度识别_OCR识别-python版(一)
  • python 全部缩进一行_一步一步学Python3(小学生也适用) 第三篇: Python基本规范
  • win10添加python环境变量_Windows10下安装python(配置环境变量)
  • python运维开发前景_运维开发前景怎么样,怎么去学习运维开发?
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • css 动态rem_我们为什么不使用 CSS 框架
  • 电脑控制苹果手机_用电脑控制手机?
  • close wait 过多原因_springboot tomcat 挂掉,假死无响应原因总结和解决方案
  • python tkinter_tkinter转盘抽奖代码、调整和逐步优化的python分析
  • path manipulation怎么解决_TensorFlow Object Detection API遇到的问题及解决
  • python安装后怎样配解释器_pycharm 安装后如何设置与更换解释器
  • cloud压缩怎么彻底删除_怎么彻底删除mysql服务?
  • 西门子et200 分布式i/o_你真的了解西门子Profinet吗?从RT切换到IRT出问题
  • python简述题_python考核试题及答案
  • python 项目示例_Python project.Project方法代码示例
  • CentOS 7 防火墙操作
  • extract-text-webpack-plugin用法
  • node和express搭建代理服务器(源码)
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • React组件设计模式(一)
  • socket.io+express实现聊天室的思考(三)
  • Spring声明式事务管理之一:五大属性分析
  • Vue UI框架库开发介绍
  • 测试开发系类之接口自动化测试
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 高度不固定时垂直居中
  • 深入浅出webpack学习(1)--核心概念
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 一道闭包题引发的思考
  • 最简单的无缝轮播
  • 06-01 点餐小程序前台界面搭建
  • ionic异常记录
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $(selector).each()和$.each()的区别
  • (42)STM32——LCD显示屏实验笔记
  • (5)STL算法之复制
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (三)Honghu Cloud云架构一定时调度平台
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (转)编辑寄语:因为爱心,所以美丽
  • ./configure,make,make install的作用
  • .htaccess 强制https 单独排除某个目录
  • .jks文件(JAVA KeyStore)
  • .net 微服务 服务保护 自动重试 Polly
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @Autowired注解的实现原理
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [20150904]exp slow.txt
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [Angular 基础] - 数据绑定(databinding)
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)
  • [bzoj1038][ZJOI2008]瞭望塔