使用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求解平方根的方法
Mar 11 Python
python实现的AES双向对称加密解密与用法分析
May 02 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
Python机器学习之SVM支持向量机
Dec 27 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
Python3.8中使用f-strings调试
May 22 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
深入了解Python enumerate和zip
Jul 16 Python
python创建文本文件的简单方法
Aug 30 Python
python实现局部图像放大
Nov 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
Zerg基本策略
2020/03/14 星际争霸
PHP字符串 ==比较运算符的副作用
2009/10/21 PHP
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
详细探究Python中的字典容器
2015/04/14 Python
Python引用模块和查找模块路径
2016/03/17 Python
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
浅析Git版本控制器使用
2017/12/10 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
美术教师自我鉴定
2014/02/12 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
毕业生工作求职信
2014/06/30 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
物业工程部岗位职责
2015/02/11 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书