使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子

1106次阅读  |  发布于6年以前

例子一:

Python用WMI模块获取windowns系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。

复制代码 代码如下:

!/usr/bin/env python

-- coding: utf-8 --

import wmi
import os
import sys
import platform
import time

def sys_version():
c = wmi.WMI ()

获取操作系统版本

for sys in c.Win32_OperatingSystem():   
    print "Version:%s" % sys.Caption.encode("UTF8"),"Vernum:%s" % sys.BuildNumber   
    print  sys.OSArchitecture.encode("UTF8")#系统是32位还是64位的   
    print sys.NumberOfProcesses #当前系统运行的进程总数  

def cpu_mem():
c = wmi.WMI ()

CPU类型和内存

for processor in c.Win32_Processor():   
    #print "Processor ID: %s" % processor.DeviceID   
    print "Process Name: %s" % processor.Name.strip()   
for Memory in c.Win32_PhysicalMemory():   
    print "Memory Capacity: %.fMB" %(int(Memory.Capacity)/1048576)   

def cpu_use():

5s取一次CPU的使用率

c = wmi.WMI()   
while True:   
    for cpu in c.Win32_Processor():   
         timestamp = time.strftime('%a, %d %b %Y %H:%M:%S', time.localtime())   
         print '%s | Utilization: %s: %d %%' % (timestamp, cpu.DeviceID, cpu.LoadPercentage)   
         time.sleep(5)       

def disk():
c = wmi.WMI ()

获取硬盘分区

for physical_disk in c.Win32_DiskDrive ():   
    for partition in physical_disk.associators ("Win32_DiskDriveToDiskPartition"):   
        for logical_disk in partition.associators ("Win32_LogicalDiskToPartition"):   
            print physical_disk.Caption.encode("UTF8"), partition.Caption.encode("UTF8"), logical_disk.Caption   

#获取硬盘使用百分情况   
for disk in c.Win32_LogicalDisk (DriveType=3):   
    print disk.Caption, "%0.2f%% free" % (100.0 * long (disk.FreeSpace) / long (disk.Size))   

def network():
c = wmi.WMI ()

获取MAC和IP地址

for interface in c.Win32_NetworkAdapterConfiguration (IPEnabled=1):   
    print "MAC: %s" % interface.MACAddress   
for ip_address in interface.IPAddress:   
    print "ip_add: %s" % ip_address   
print   

#获取自启动程序的位置   
for s in c.Win32_StartupCommand ():   
    print "[%s] %s <%s>" % (s.Location.encode("UTF8"), s.Caption.encode("UTF8"), s.Command.encode("UTF8"))    


#获取当前运行的进程   
for process in c.Win32_Process ():   
    print process.ProcessId, process.Name   

def main():
sys_version()

cpu_mem()

#disk()   
#network()   
#cpu_use()   

if name == 'main':
main()
print platform.system()
print platform.release()
print platform.version()
print platform.platform()
print platform.machine()

例子二:

由于我用到的不多,所以只获取的CPU、内存和硬盘,如果需要其它资源,请参照msdn。

复制代码 代码如下:

import os
import win32api
import win32con
import wmi
import time

def getSysInfo(wmiService = None):
result = {}
if wmiService == None:
wmiService = wmi.WMI()

cpu

for cpu in wmiService.Win32_Processor():  
    timestamp = time.strftime('%a, %d %b %Y %H:%M:%S', time.localtime())  
    result['cpuPercent'] = cpu.loadPercentage  
# memory  
cs = wmiService.Win32_ComputerSystem()  
os = wmiService.Win32_OperatingSystem()  
result['memTotal'] = int(int(cs[0].TotalPhysicalMemory)/1024/1024)  
result['memFree'] = int(int(os[0].FreePhysicalMemory)/1024)  
#disk  
result['diskTotal'] = 0  
result['diskFree'] = 0  
for disk in wmiService.Win32_LogicalDisk(DriveType=3):  
    result['diskTotal'] += int(disk.Size)  
    result['diskFree'] += int(disk.FreeSpace)  
result['diskTotal'] = int(result['diskTotal']/1024/1024)  
result['diskFree'] = int(result['diskFree']/1024/1024)  
return result

if name == 'main':
wmiService = wmi.WMI()
while True:
print getSysInfo(wmiService)
time.sleep(3)

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8