使用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去除所有html标签的方法
May 05 Python
Python中Class类用法实例分析
Nov 12 Python
wxpython中自定义事件的实现与使用方法分析
Jul 21 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
pandas中Timestamp类用法详解
Dec 11 Python
python删除过期log文件操作实例解析
Jan 31 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
对numpy Array [: ,] 的取值方法详解
Jul 02 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
Python virtualenv虚拟环境实现过程解析
Apr 18 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
python爬虫中url管理器去重操作实例
Nov 30 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 xml实例 留言本
2009/03/20 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
Python用GET方法上传文件
2015/03/10 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python用模块pytz来转换时区
2016/08/19 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
师范大学音乐表演专业求职信
2013/10/23 职场文书
运动会口号大全
2014/06/07 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
工厂见习报告范文
2014/10/31 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang