0. 依赖包
import os
import commands
from collections import namedtuple
1. 获取磁盘挂载点路径
def getPath():
output = commands.getoutput("df -h")
outputresult = output.split("\n")
List = []
for num in range(1, len(outputresult)):
if len(outputresult[num].split()) > 6:
temp = outputresult[num].split()[0:5]
temp.insert(len(temp)+1, outputresult[num][outputresult[num].find("%")+1:])
List.append(temp)
else:
temp = outputresult[num].split()
List.append(temp[5])
return List
2. 获取所有挂载点的已使用空间大小
def disk_usage(path):
"""Return disk usage associated with path."""
usage_ntuple = namedtuple('usage', 'total used free percent')
st = os.statvfs(path)
free = (st.f_bavail * st.f_frsize)
total = (st.f_blocks * st.f_frsize)
used = (st.f_blocks - st.f_bfree) * st.f_frsize
try:
percent = (float(used) / total) * 100
except ZeroDivisionError:
percent = 0
return usage_ntuple(total, used, free, round(percent, 1))
3. 计算使用率
def get_disk_info():
pathlist = getPath()
totalDiskList = []
total_sum = 0
for path in pathlist:
disktotal = disk_usage(path)[0] / 1073741824 + 1
totalDiskList.append(disktotal)
print totalDiskList
for count in totalDiskList:
total_sum += count
totalUsedDiskList = []
used_sum = 0
for path in pathlist:
disktotal = disk_usage(path)[1] / 1073741824 + 1
totalUsedDiskList.append(disktotal)
print totalUsedDiskList
for count in totalUsedDiskList:
used_sum += count
print total_sum, used_sum
usage_percent = format((float(used_sum) / float(total_sum)), '.2f')
return total_sum, usage_percent
4. 结果