使用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 13 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 Python
python清理子进程机制剖析
Nov 23 Python
python在非root权限下的安装方法
Jan 23 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
python单线程文件传输的实例(C/S)
Feb 13 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
PyCharm 2019.3发布增加了新功能一览
Dec 08 Python
Python简单实现区域生长方式
Jan 16 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 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 return语句的另一个作用
2014/07/30 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
python机器学习库常用汇总
2017/11/15 Python
python实现聊天小程序
2018/03/13 Python
Python小进度条显示代码
2019/03/05 Python
numpy.random模块用法总结
2019/05/27 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
公司离职证明范本(5篇)
2014/09/17 职场文书
银行贷款委托书范本
2014/10/11 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
用JS写一个发布订阅模式
2021/11/07 Javascript