首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python计算目录的大小?

使用Python计算目录的大小?
EN

Stack Overflow用户
提问于 2009-09-08 15:06:43
回答 30查看 227.4K关注 0票数 240

在我重新发明这个轮子之前,有没有人有一个用Python计算目录大小的好例程?如果例程能很好地将大小格式化为Mb/Gb等,那就太好了。

EN

回答 30

Stack Overflow用户

发布于 2014-08-30 03:00:48

到目前为止,建议的一些方法实现了递归,其他方法使用shell或不会产生整齐格式化的结果。当您的代码在Linux平台上是一次性的时,您可以像往常一样进行格式化,包括递归,作为一行代码。除了最后一行中的print之外,它将适用于当前版本的python2python3

代码语言:javascript
复制
du.py
-----
#!/usr/bin/python3
import subprocess

def du(path):
    """disk usage in human readable format (e.g. '2,1GB')"""
    return subprocess.check_output(['du','-sh', path]).split()[0].decode('utf-8')

if __name__ == "__main__":
    print(du('.'))

简单,高效,适用于文件和多级目录:

代码语言:javascript
复制
$ chmod 750 du.py
$ ./du.py
2,9M
票数 59
EN

Stack Overflow用户

发布于 2010-12-07 00:12:22

下面是一个递归函数(它递归地汇总所有子文件夹及其各自文件的大小),它返回与运行"du -sb“时完全相同的字节。在linux中(其中的".“表示“当前文件夹”):

代码语言:javascript
复制
import os

def getFolderSize(folder):
    total_size = os.path.getsize(folder)
    for item in os.listdir(folder):
        itempath = os.path.join(folder, item)
        if os.path.isfile(itempath):
            total_size += os.path.getsize(itempath)
        elif os.path.isdir(itempath):
            total_size += getFolderSize(itempath)
    return total_size

print "Size: " + str(getFolderSize("."))
票数 24
EN

Stack Overflow用户

发布于 2016-05-22 05:01:23

使用os.scandir的Python3.5递归文件夹大小

代码语言:javascript
复制
def folder_size(path='.'):
    total = 0
    for entry in os.scandir(path):
        if entry.is_file():
            total += entry.stat().st_size
        elif entry.is_dir():
            total += folder_size(entry.path)
    return total
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1392413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档