使用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之集合的关系
Sep 24 Python
python实现的AES双向对称加密解密与用法分析
May 02 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
对Python中数组的几种使用方法总结
Jun 28 Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 Python
用python做游戏的细节详解
Jun 25 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
python中添加模块导入路径的方法
Feb 03 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读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
php图片上传类 附调用方法
2016/05/15 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
xmlHTTP实例
2006/10/24 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
彪马法国官网:PUMA法国
2019/12/15 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
什么是组件架构
2016/05/15 面试题
幼儿园教师个人反思
2014/01/30 职场文书
团购业务员岗位职责
2014/03/15 职场文书
负责人任命书范本
2014/06/04 职场文书
校车司机安全责任书
2015/05/11 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python