#coding:utf-8
import os  
from collections import namedtuple  
 
disk_ntuple = namedtuple('partition',  'device mountpoint fstype')  
usage_ntuple = namedtuple('usage',  'total used free percent')  
#获取当前操作系统下所有磁盘  
def disk_partitions(all=False):  
    """Return all mountd partitions as a nameduple.
    If all == False return phyisical partitions only.
    """  
    phydevs = []  
    f = open("/proc/filesystems", "r")  
    for line in f:  
        if not line.startswith("nodev"):  
            phydevs.append(line.strip())  
 
    retlist = []  
    f = open('/etc/mtab', "r")  
    for line in f:  
        if not all and line.startswith('none'):  
            continue  
        fields = line.split()  
        device = fields[0]  
        mountpoint = fields[1]  
        fstype = fields[2]  
        if not all and fstype not in phydevs:  
            continue  
        if device == 'none':  
            device = ''  
        ntuple = disk_ntuple(device, mountpoint, fstype)  
        retlist.append(ntuple)  
    return retlist  
#统计某磁盘使用情况,返回对象  
def disk_usage(path):  
    """Return disk usage associated with path."""  
    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 = ret = (float(used) / total) * 100  
    except ZeroDivisionError:  
        percent = 0  
    # NB: the percentage is -5% than what shown by df due to  
    # reserved blocks that we are currently not considering:  
    # http://goo.gl/sWGbH  
    return usage_ntuple(total, used, free, round(percent, 1))
print disk_partitions()

def getPath():
    """
    获取磁盘的分区
    """
    disklist = []
    list = disk_partitions()
    for i in list:
    disklist.append(i[1])
    return disklist
#pathlist = getPath()
#print "path list is ....%s" % pathlist
#print disk_usage('/home')
def getDiskTotal():
    """
    获取磁盘总的大小
    """
    newpathlist = []
    pathlist = []
    pathlist = getPath()
    print "pathlist type is %s ,and the pathlist value is %s" % (type(pathlist),pathlist)
    pathlist.append("/dev/shm/")
    totalDiskList = []
#    print newpathlist
    sum = 0
    for path in pathlist:
        disktotal = disk_usage(path)[0] / 1073741824 + 1
        totalDiskList.append(disktotal)
    for count in totalDiskList:
        sum += count
    print sum

getDiskTotal()