使用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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
python实现批量改文件名称的方法
May 25 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
Jun 29 Python
python3实现名片管理系统
Nov 29 Python
Python使用字典的嵌套功能详解
Feb 27 Python
Django发送邮件功能实例详解
Sep 02 Python
PyCharm下载和安装详细步骤
Dec 17 Python
Pytorch 实现冻结指定卷积层的参数
Jan 06 Python
python Tensor和Array对比分析
Jan 08 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
Python使用pyenv实现多环境管理
Feb 05 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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像数组一样存取和修改字符串字符
2014/03/21 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
Javascript 二维数组
2009/11/26 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
Python bisect模块原理及常见实例
2020/06/17 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
html5清空画布方法(三种)
2017/10/16 HTML / CSS
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
linux系统都有哪些运行级别
2012/04/15 面试题
高中生家长会演讲稿
2014/01/14 职场文书
房地产项目建议书
2014/03/12 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
休学证明范本
2015/06/19 职场文书