使用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 获取进程pid号的方法
Mar 10 Python
简单实现python爬虫功能
Dec 31 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
微信跳一跳游戏python脚本
Apr 01 Python
python print 按逗号或空格分隔的方法
May 02 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
python 搜索大文件的实例代码
Jul 08 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
用Python去除图像的黑色或白色背景实例
Dec 12 Python
python logging通过json文件配置的步骤
Apr 27 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/01/27 PHP
php实现httpRequest的方法
2015/03/13 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
Javascript浅谈之this
2013/12/17 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python集合类型用法分析
2015/04/08 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Python中包的用法及安装
2020/02/11 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
美国批发零售网站:GearXS
2016/07/26 全球购物
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
信用社实习人员自我鉴定
2013/09/20 职场文书
求职面试个人自我评价
2014/02/28 职场文书
决心书范文
2014/03/11 职场文书
文化产业实施方案
2014/06/07 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
Python实现滑雪小游戏
2021/09/25 Python
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技