python硬盘占用_python监测硬盘使用率

博客介绍了使用Python获取磁盘剩余空间的方法,通过os.statvfs函数,给出两种计算方式,一种结果准确,另一种不准确。还介绍了获取内存信息的方法,通过读取/proc/meminfo文件计算内存剩余百分比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python获得磁盘剩余空间statvfs:>>> import os

>>> import statvfs

>>> vfs=os.statvfs("/home")

>>> vfs

(4096, 4096, 70959944, 70058799, 66396080, 73269248, 73234981, 73234981, 0, 255)

>>> dir(statvfs)

[‘F_BAVAIL‘, ‘F_BFREE‘, ‘F_BLOCKS‘, ‘F_BSIZE‘, ‘F_FAVAIL‘, ‘F_FFREE‘, ‘F_FILES‘, ‘F_FLAG

struct statfs {

long    f_type;     /* 文件系统类型  */

long    f_bsize;    /* 经过优化的传输块大小  */

long    f_blocks;   /* 文件系统数据块总数 */

long    f_bfree;    /* 可用块数 */

long    f_bavail;   /* 非超级用户可获取的块数 */

long    f_files;    /* 文件结点总数 */

long    f_ffree;    /* 可用文件结点数 */

fsid_t  f_fsid;     /* 文件系统标识 */

long    f_namelen;  /* 文件名的最大长度 */

};

方法1(结果准确)

statfs结构中可用空间块数有两种f_bfree和 f_bavail,前者是硬盘所有剩余空间,后者为非root用户剩余空间,ext3文件系统给root用户分有5%的独享空间,所以这里是不同的地方。这里要强调的是每块的大小一般是4K。因此,要实现与df结果一致的就得在获得块数上乘以4,这样已用、可用、总块数就可以实现。如果还要实现百分比一致,那么要注意的是,df命令获得是整数百分比,没有小数,这里使用的进一法,而不是四舍五入法。所以在程序里直接+1取整。def disk_stat():

import os

hd={}

disk = os.statvfs(‘/usr‘)

percent = (disk.f_blocks - disk.f_bfree) * 100 / (disk.f_blocks -disk.f_bfree + disk.f_bavail) + 1

return percent

print disk_stat()

方法2(这种不准确)def disk_stat():

import os

hd={}

disk = os.statvfs(‘/‘)

hd[‘available‘] = disk.f_bsize * disk.f_bavail / 1024000

hd[‘capacity‘] = disk.f_bsize * disk.f_blocks / 1024000

hd[‘used‘] = disk.f_bsize * disk.f_bfree / 1024000

return hd

print "hd‘s capacity",disk_stat()[‘capacity‘]

print "hd‘s available",disk_stat()[‘available‘]

print "hd‘s used",disk_stat()[‘used‘]

——————————————

获取内存:#!/usr/bin/python

# -*- coding: utf-8 -*-

from __future__ import division

def mem_stat():

mem = {}

f = open(‘/proc/meminfo‘)

lines = f.readlines()

f.close()

for line in lines:

name = line.split(‘:‘)[0]

var = line.split(‘:‘)[1].split()[0]

mem[name] = long(var)

Mem = ((mem[‘MemFree‘] + mem[‘Buffers‘] + mem[‘Cached‘]) / mem[‘MemTotal‘]) * 100

print (‘内存剩余:%0.2f%%‘%Mem)

mem_stat()

打印结果:

内存剩余:31.25%

原文:http://dragonball.blog.51cto.com/1459915/1413369

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值