使用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二维码生成库qrcode安装和使用示例
Dec 16 Python
python实现数独算法实例
Jun 09 Python
Django开发的简易留言板案例详解
Dec 04 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
python动态进度条的实现代码
Jul 03 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
pycharm 安装JPype的教程
Aug 08 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
Python远程linux执行命令实现
Nov 11 Python
Django中template for如何使用方法
Jan 31 Python
Django程序的优化技巧
Apr 29 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
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
php调整服务器时间的方法
2015/04/03 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
python常用排序算法的实现代码
2019/11/08 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
Django URL参数Template反向解析
2020/11/24 Python
罗技美国官网:Logitech美国
2020/01/22 全球购物
PHP面试题及答案二
2015/05/23 面试题
网络管理员岗位职责
2014/03/17 职场文书
房屋租赁协议书
2014/04/10 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
《1942》观后感
2015/06/08 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技