使用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爬虫框架Scrapy安装使用步骤
Apr 01 Python
python检测远程服务器tcp端口的方法
Mar 14 Python
介绍Python中几个常用的类方法
Apr 08 Python
Python实现求最大公约数及判断素数的方法
May 26 Python
在类Unix系统上开始Python3编程入门
Aug 20 Python
python opencv 图像尺寸变换方法
Apr 02 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
python之django母板页面的使用
Jul 03 Python
Python时间和字符串转换操作实例分析
Mar 16 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
Python基于xlrd模块处理合并单元格
Jul 28 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 flv视频时间获取函数
2010/06/29 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
php 数据结构之链表队列
2017/10/17 PHP
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
[01:31]完美与DOTA2历程
2014/07/31 DOTA
python+pandas分析nginx日志的实例
2018/04/28 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Python中字符串List按照长度排序
2019/07/01 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
Shell如何接收变量输入
2016/08/06 面试题
综合素质的自我鉴定
2013/10/07 职场文书
仓库理货员岗位职责
2013/12/18 职场文书
小学生读书活动总结
2014/06/30 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
2014年度工作总结报告
2014/12/15 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
优秀志愿者感言
2015/08/01 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技