使用Python获取文件夹大小与占用空间大小

文件大小与占用空间是不一样的,一般占用空间是真实大小的1.1-1.4倍吧;

python中检测文件大小函数是:

os.path.getsize(your_dir_path)

但是这种方法无法获取文件占用空间,尤其是包含大量小文件时,相差很大;

在Linux中,使用shell结合正则表达式获取文件夹占用大小,示例代码如下:

 

__author__ = 'weiran'
import os
import re
# 待检测文件大小范围必须在 1MB 以上
# 使用 du -sh 命令,以避免占用大小与真实大小不同
# 输入:待检测文件绝对路径
# 返回:该文件夹占用空间大小,单位:GB,保留2位小数
# weiran 2018-7-24
def get_doc_usage_size_by_shell(doc_path):
    response = os.popen(f'du -sh {doc_path}')
    str_size = response.read().split()[0]
    f_size = float(re.findall(r'[.\d]+', str_size)[0])
    size_unit = re.findall(r'[A-Z]', str_size)[0]
    if size_unit == 'M':
        f_size = round(f_size/1024, 2)
    if size_unit == 'T':
        f_size = round(f_size*1024, 2)
    return f_size


# 获取指定路径的文件夹大小(单位:GB)
def get_doc_real_size(p_doc):
    size = 0.0
    for root, dirs, files in os.walk(p_doc):
        size += sum([os.path.getsize(os.path.join(root, file)) for file in files])
    size = round(size/1024/1024/1024, 2)
    return size

环境:Python3.6.3

但仍然不知道Python自带的方法找到文件的占用大小,有知道的小伙伴请指点一二~

你可能感兴趣的:(python,linux)