1. 获取单个文件大小

import os
filesize = os.path.getsize( file_fullpath )

使用 os.path.getsize() 函数,参数是文件的绝对路径

 

2. 获取文件夹大小

遍历文件夹,将所有文件大小累加,即是该文件夹的大小。

遍历文件夹使用 os.walk() 函数

import os  
from os.path import join, getsize  
  
def getdirsize(dir):  
   size = 0L  
   for root, dirs, files in os.walk(dir):  
      size += sum([getsize(join(root, name)) for name in files])  
   return size  
  
if __name__ == '__main__':  
   filesize = getdirsize(r'/etc/')  
   print 'There are %.3f' % (size/1024/1024), 'Mbytes in /etc/'  

 

3. 获取文件夹下特定类型文件的大小

需要通过 os.path.splitext(file) 对文件后缀名进行判断,

例如:统计后缀名为 ['.gz', '.txt', '.conf', '.sh'] 的文件大小

def get_ts_filesize(ts_path, ext_type=['.gz', '.txt', '.conf', '.sh']):
    '''
    ts_path = /etc
    '''
    filesize_sum = 0
    for root, dirs, files in os.walk(ts_path):
        for file in files:
            file_ext = os.path.splitext(file)[1]
            if file_ext not in ext_type:
                continue
            
            file_fullpath = os.path.join(root, file)
            filesize = os.path.getsize(file_fullpath)
            filesize_sum += filesize
            print root, dirs, file, file_ext, file_fullpath, filesize
    print filesize_sum

 

Python 获取目录大小

需要用到的模块:

os, os.path

用到的几个方法:

os.path.exists(strPath)                 :         判断strPath是否存在。
os.path.isfile(strPath)                   :         判断strPath 是否是文件
os.walk(strPath)                           :         遍历strPath.返回一个3元组 根目录,目录列表,文件列表。
os.path.getsize(strPath)               :         获取文件的大小

 

示例代码:

#!/usr/bin/env python  
import sys;  
import os;  
  
def GetPathSize(strPath):  
    if not os.path.exists(strPath):  
        return 0;  
  
    if os.path.isfile(strPath):  
        return os.path.getsize(strPath);  
  
    nTotalSize = 0;  
    for strRoot, lsDir, lsFiles in os.walk(strPath):  
        #get child directory size  
        for strDir in lsDir:  
            nTotalSize = nTotalSize + GetPathSize(os.path.join(strRoot, strDir));  
  
        #for child file size  
        for strFile in lsFiles:  
            nTotalSize = nTotalSize + os.path.getsize(os.path.join(strRoot, strFile));  
  
    return nTotalSize;  
  
if __name__ == '__main__':  
    nFileSize = GetPathSize(sys.argv[1])  
    print(nFileSize);  

 

运行结果(单位大小是字节byte):

47678506181