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


Posted in Python onApril 15, 2014

例子一:

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)

采用的wmi模块获取的,由于wmi初始化时占用系统资源太高,所以如果需要循环获取,请在循环体外面把wmi对象初始化好,然后传入函数里面,这样就不会产生CPU资源过高的情况。

Python 相关文章推荐
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
django解决订单并发问题【推荐】
Jul 31 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
python函数不定长参数使用方法解析
Dec 14 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
Python类super()及私有属性原理解析
Jun 15 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
python实现在线翻译
Jun 18 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
python爬取豆瓣电影TOP250数据
May 23 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 Python
Pandas 数据编码的十种方法
Apr 20 Python
python中使用sys模板和logging模块获取行号和函数名的方法
Apr 15 #Python
python 动态获取当前运行的类名和函数名的方法
Apr 15 #Python
python使用百度翻译进行中翻英示例
Apr 14 #Python
python使用xauth方式登录饭否网然后发消息
Apr 11 #Python
python判断、获取一张图片主色调的2个实例
Apr 10 #Python
Python使用新浪微博API发送微博的例子
Apr 10 #Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 #Python
You might like
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
prototype 的说明 js类
2006/09/07 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
浅谈angular4生命周期钩子
2017/09/05 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
Webpack中publicPath路径问题详解
2018/05/03 Javascript
js的对象与函数详解
2019/01/21 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
深入理解Python中各种方法的运作原理
2015/06/15 Python
python套接字流重定向实例汇总
2016/03/03 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
python协程之动态添加任务的方法
2019/02/19 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
python super()函数的基本使用
2020/09/10 Python
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
银行实习的自我鉴定
2013/12/10 职场文书
总会计师岗位职责
2014/02/19 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
php双向队列实例讲解
2021/11/17 PHP
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers