1. # -*- coding: gbk -*- 
  2.  
  3. import win32com.client 
  4. import time 
  5.  
  6. def disk_status(): 
  7.     try
  8.         while 1
  9.             strComputer = "." 
  10.             objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator"
  11.             objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2"
  12.             colItems = objSWbemServices.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfDisk_LogicalDisk"
  13.             print "time:" + time.strftime("%Y-%m-%d %H:%M:%S"
  14.             print "Device:" +'\t' + "tps" +'\t' + "kB_read/s" +'\t' + "kB_wrtn/s" +'\t' + "kB_read" +'\t' + "kB_wrtn" +'\t' +"Disk_free" 
  15.             for objItem in colItems: 
  16.                 if objItem.Name != '_Total'
  17.                     print objItem.Name +'\t' + str(objItem.DiskTransfersPersec) +'\t' + "%0.1f" % (float(objItem.DiskReadBytesPersec)/1024) +'\t' + '\t' + "%0.1f" % (float(objItem.DiskWriteBytesPersec)/1024) +'\t' + '\t' +  "%0.1f" % (float(objItem.DiskReadsPersec)/1024) +'\t' + "%0.1f" % (float(objItem.DiskWritesPersec)/1024) +'\t' + "%0.0f%%" % objItem.PercentFreeSpace  
  18.                         
  19.                     #Device: 显示磁盘名称 
  20.                     #tps: 表示每秒钟输出到物理磁盘的传输次数。一次传输就是一个对物理磁盘的 I/O 请求。多个逻辑请求可被并为对磁盘的一个单一 I/O 请求。传输具有中等的大小。 
  21.                     #kB_read/s: 每秒从磁盘读取的数据量,单位为KB。 
  22.                     #kB_wrtn/s: 每秒从写入磁盘的数据量,单位为KB。 
  23.                     #Kb_read: 读取的 KB 总数。  
  24.                     #Kb_wrtn: 写入的 KB 总数。 
  25.                     #DiskTransfersPerSec:每秒磁盘传输次数。 
  26.                     #DiskReadBytesPerSec:每秒从磁盘读取得数据量,单位为Byte。 
  27.                     #DiskWriteBytesPerSec:每秒从磁盘写取得数据量,单位为Byte。 
  28.                     #PercentFreeSpace:可用磁盘百分比 
  29.             print '' 
  30.             time.sleep(2)  
  31.     except (EOFError,KeyboardInterrupt): 
  32.         pass 
  33. if __name__ == '__main__'
  34.     disk_status()