使用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数据结构之二叉树的遍历实例
Apr 29 Python
Python导出数据到Excel可读取的CSV文件的方法
May 12 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
Django处理多用户类型的方法介绍
May 18 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 Python
Python Tornado核心及相关原理详解
Jun 24 Python
Python通过len函数返回对象长度
Oct 22 Python
python 指定源路径来解决import问题的操作
Mar 04 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 06 Python
Python绘制散乱的点构成的图的方法
Apr 21 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 dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
js加解密 脚本解密
2008/02/22 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
js字符串转成JSON
2013/11/07 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
python协程之动态添加任务的方法
2019/02/19 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
Python3的socket使用方法详解
2020/02/18 Python
python+requests接口自动化框架的实现
2020/08/31 Python
Pandas的数据过滤实现
2021/01/15 Python
超市业务员岗位职责
2013/12/05 职场文书
英语专业学生个人求职信范文
2014/01/06 职场文书
本科生的职业生涯规划范文
2014/01/09 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
求职自我评价范文100字
2014/09/23 职场文书
银行先进个人总结
2015/02/15 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang