登录  /  注册

Pyhon 获取文件夹的大小统计

高洛峰
发布: 2017-02-28 10:28:06
原创
1376人浏览过

python os 文件/目录方法

首先介绍用到的几个函数,写了一个小demo便于理解。

 Pyhon 获取文件夹的大小统计

os.getcwd()

返回当前路径。 

os.listdir (path)

返回当前路径下的文件夹与文件(不向下二级递归)。

os.path.join()

join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

os.path 让join()识别为路径,根据系统自动补齐'\' '/'。

os.path.getsize(path)  返回文件大小

# -*- encoding: utf-8  -*_
import os

path = os.getcwd() # 获取当前路径
for dirs in os.listdir(path):
    print dirs

file_name = "路径补齐.txt"
path = os.path.join(path,file_name)
print path
size = os.path.getsize("E:\PythonEclipse\PythonStudy\os.listdir\listdirs.py")
print size
登录后复制

输出结果:

A
B
C
file.txt
listdirs.py
E:\PythonEclipse\PythonStudy\os.listdir\路径补齐.txtA
303
登录后复制

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。

topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。

onerror -- 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。

followlinks -- 设置为 true,则通过软链接访问目录。

# -*- encoding: utf-8  -*_
import os

for root, dirs, filename in os.walk(os.getcwd()):
    print root
    print dirs
    print filename
登录后复制

输出结果:

E:\PythonEclipse\PythonStudy\os.listdir
['A', 'B', 'C']
['file.txt', 'listdirs.py']
E:\PythonEclipse\PythonStudy\os.listdir\A
[]
[]
E:\PythonEclipse\PythonStudy\os.listdir\B
[]
['file.txt']
E:\PythonEclipse\PythonStudy\os.listdir\C
[]
[]
登录后复制

功能实现思路:

需要获取文件夹的大小,只要遍历文件下所有的文件,获取所有文件大小求和即可。

这里是实现的是当前目录下,文件夹大小不包括当前文件下文件大小。

python的编码的格式,需要注意。

# -*- encoding: utf-8 -*-
import os
rootdir = os.getcwd()               #获取当前路径

rootdir = rootdir.decode('gbk')
x  = u'统计文件大小.csv'
f = open(os.path.join(rootdir,x), "w+")
for dirname in  os.listdir(rootdir):  #获取二级目录所有文件夹与文件
    Dir = os.path.join(rootdir, dirname)    #路径补齐
    count = 0
    if (os.path.isdir(Dir)):           #判断是否为目录
        for r, ds, files in os.walk(Dir): #遍历目录下所有文件根,目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名称】
            for file in files:      #遍历所有文件
                size = os.path.getsize(os.path.join(r, file)) #获取文件大小
                count += size
        if ((count/1024.0/1024.0) < 1024):
            print  Dir +&#39;\t&#39; + &#39;%.2f&#39;% (count/1024.0/1024.0)+&#39;MB&#39;
            f.write(Dir.encode("gbk") +&#39;,&#39;+  &#39;%.2f&#39;% (count/1024.0/1024.0)+&#39;MB&#39; + &#39;\n&#39;)
        else:
            print  Dir + &#39;\t&#39; + &#39;%.2f&#39; % (count / 1024.0 / 1024.0/1024.0) + &#39;GB&#39;
            f.write(Dir.encode("gbk") + &#39;,&#39; + &#39;%.2f&#39; % (count / 1024.0 / 1024.0/1024.0) + &#39;GB&#39; + &#39;\n&#39;)
    else:
        continue
f.close()
登录后复制

更多Pyhon 获取文件夹的大小统计相关文章请关注PHP中文网!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号