Python实现的读取电脑硬件信息功能示例


Posted in Python onMay 30, 2018

本文实例讲述了Python实现的读取电脑硬件信息功能。分享给大家供大家参考,具体如下:

上学那会,老师让我用java获取电脑硬件信息,CPU, 硬盘,MAC等,那个时候感觉搞了好久。。。。。。

今天,用python试了一下,简单多了。分享一下:

首先安装wmi库,wmi是一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源。大多用户习惯于使用众多的图形化管理工 具来管理Windows资源,在wmi之前这些工具都是通过 Win32应用程序编程接口来访问和管理Windows资源的。大多数脚本 语言都不能直接调用Win32 API,wmiI的出现使得系统管理员可以通过一种简便的方法即利用常见的脚本语言实现常用的系统管理任务。好了,上代码吧

import wmi
import time
import json
import win32com
class PCHardwork(object):
 global s
 s = wmi.WMI()
 def get_CPU_info(self):
  cpu = []
  cp = s.Win32_Processor()
  for u in cp:
   cpu.append(
    {
     "Name": u.Name,
     "Serial Number": u.ProcessorId,
     "CoreNum": u.NumberOfCores,
     "numOfLogicalProcessors": u.NumberOfLogicalProcessors,
     "timestamp": time.strftime('%a, %d %b %Y %H:%M:%S', time.localtime()),
     "cpuPercent": u.loadPercentage
    }
   )
  print ":::CPU info:", json.dumps(cpu, True, indent=4)
  return cpu
 def get_disk_info(self):
  disk = []
  for pd in s.Win32_DiskDrive():
   disk.append(
    { 
     "Serial": s.Win32_PhysicalMedia()[0].SerialNumber.lstrip().rstrip(), # 获取硬盘序列号,调用另外一个win32 API
     "ID": 123456,
     "Caption": pd.Caption,
     "size": str(int(float(pd.Size)/1024/1024/1024))+"G"
    }
   )
  print":::Disk info:", json.dumps(disk, True, indent=4)
  return disk
 def get_network_info(self):
  network = []
  for nw in s.Win32_NetworkAdapterConfiguration (IPEnabled=1):
   network.append(
    {
     "MAC": nw.MACAddress,
     "ip": nw.IPAddress
    }
   )
  print":::Network info:", json.dumps(network, True, indent=4)
  return network
 def get_running_process(self):
  process = []
  for p in s.Win32_Process():
   process.append(
    {
     p.Name: p.ProcessId
    }
   )
  print":::Running process:", json.dumps(process, True, indent=4)
  return process
#运行测试:
PCinfo = PCHardwork()
PCinfo.get_CPU_info()
PCinfo.get_disk_info()
PCinfo.get_network_info()
PCinfo.get_running_process()

运行结果:

:::CPU info: [
    {
        "numOfLogicalProcessors": 2,
        "cpuPercent": 27,
        "Name": "Pentium(R) Dual-Core  CPU      E5300  @ 2.60GHz",
        "CoreNum": 2,
        "timestamp": "Tue, 29 May 2018 15:19:52",
        "Serial Number": "BFEBFBFF0001067A"
    }
]
:::Disk info: [
    {
        "Caption": "WDC WD5000AAKX-22ERMA0 ATA Device",
        "Serial": "WD-WCC2EV784095",
        "ID": 123456,
        "size": "465G"
    }
]
:::Network info: [
    {
        "ip": [
            "192.168.3.37",
            "fe80::d1a:8c98:b6d9:5f28"
        ],
        "MAC": "E0:CB:4E:07:75:85"
    }
]
:::Running process: [
    {
        "System Idle Process": 0
    },
    {
        "System": 4
    },
    {
        "smss.exe": 296
    },
    {
        "csrss.exe": 428
    },
    {
        "wininit.exe": 484
    },
    {
        "csrss.exe": 504
    },
    {
        "services.exe": 548
    },
    {
        "winlogon.exe": 580
    },
    {
        "lsass.exe": 588
    },
    {
        "lsm.exe": 596
    },
    {
        "svchost.exe": 732
    },
    {
        "svchost.exe": 812
    },
    {
        "svchost.exe": 872
    },
    {
        "svchost.exe": 936
    },
    {
        "svchost.exe": 996
    },
    {
        "audiodg.exe": 1076
    },
    {
        "svchost.exe": 1124
    },
    {
        "ZhuDongFangYu.exe": 1272
    },
    {
        "svchost.exe": 1300
    },
    {
        "spoolsv.exe": 1556
    },
    {
        "svchost.exe": 1584
    },
    {
        "360bpsvc.exe": 1656
    },
    {
        "AlibabaProtect.exe": 1680
    },
    {
        "QQProtect.exe": 1800
    },
    {
        "secbizsrv.exe": 1860
    },
    {
        "TBSecSvc.exe": 1904
    },
    {
        "httpd.exe": 2004
    },
    {
        "mysqld.exe": 2040
    },
    {
        "wwbizsrv.exe": 456
    },
    {
        "taskhost.exe": 1376
    },
    {
        "dwm.exe": 2140
    },
    {
        "explorer.exe": 2156
    },
    {
        "TaobaoProtect.exe": 2368
    },
    {
        "360tray.exe": 2476
    },
    {
        "tomcat6w.exe": 2500
    },
    {
        "httpd.exe": 2676
    },
    {
        "360sd.exe": 2712
    },
    {
        "aliwssv.exe": 3084
    },
    {
        "conhost.exe": 3096
    },
    {
        "360bdoctor.exe": 3280
    },
    {
        "baidupinyin.exe": 3376
    },
    {
        "svchost.exe": 3420
    },
    {
        "360rp.exe": 4008
    },
    {
        "QQ.exe": 4136
    },
    {
        "TXPlatform.exe": 4480
    },
    {
        "360se.exe": 4624
    },
    {
        "360se.exe": 4792
    },
    {
        "wdswfsafe.exe": 4924
    },
    {
        "360se.exe": 5916
    },
    {
        "360se.exe": 4456
    },
    {
        "360se.exe": 4604
    },
    {
        "SoftMgrLite.exe": 2304
    },
    {
        "360se.exe": 5612
    },
    {
        "360se.exe": 2756
    },
    {
        "hh.exe": 6752
    },
    {
        "KMPlayer.exe": 7616
    },
    {
        "chrome.exe": 6848
    },
    {
        "chrome.exe": 7956
    },
    {
        "chrome.exe": 7044
    },
    {
        "chrome.exe": 6432
    },
    {
        "chrome.exe": 4396
    },
    {
        "chrome.exe": 5240
    },
    {
        "360se.exe": 968
    },
    {
        "TTPlayer.exe": 8636
    },
    {
        "360se.exe": 7080
    },
    {
        "chrome.exe": 8784
    },
    {
        "360se.exe": 7148
    },
    {
        "360se.exe": 8760
    },
    {
        "360se.exe": 2604
    },
    {
        "360se.exe": 4784
    },
    {
        "360se.exe": 8804
    },
    {
        "360se.exe": 7096
    },
    {
        "360se.exe": 8900
    },
    {
        "TrustedInstaller.exe": 5676
    },
    {
        "360se.exe": 5232
    },
    {
        "flashfxp.exe": 9356
    },
    {
        "flashfxp.exe": 4416
    },
    {
        "360se.exe": 9868
    },
    {
        "360se.exe": 8816
    },
    {
        "360se.exe": 6816
    },
    {
        "eclipsePHP.exe": 11000
    },
    {
        "javaw.exe": 9324
    },
    {
        "360se.exe": 11112
    },
    {
        "editplus.exe": 6748
    },
    {
        "cmd.exe": 11740
    },
    {
        "conhost.exe": 10532
    },
    {
        "eclipse.exe": 10556
    },
    {
        "python2.exe": 11772
    },
    {
        "conhost.exe": 3676
    },
    {
        "360se.exe": 9604
    },
    {
        "360se.exe": 10656
    },
    {
        "svchost.exe": 10888
    },
    {
        "WmiPrvSE.exe": 11968
    },
    {
        "WmiPrvSE.exe": 10988
    },
    {
        "python2.exe": 10956
    },
    {
        "conhost.exe": 10328
    }
]

简单吧,附上wmi api说明: https://msdn.microsoft.com/en-us/library/bg126473%28v=vs.85%29.aspx

补充:这里使用Python2.7平台测试,可能会出现如下错误:

1. no module named wmi 错误

可使用pip命令解决:

pip install wmi

即可。

2. no module named win32com.client 错误

本站下载pywin32-223-cp27-none-win32.whl 。

使用如下命令安装:

pip install pywin32-223-cp27-none-win32.whl

即可。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 实现文件的递归拷贝实现代码
Aug 02 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
Python3中详解fabfile的编写
Jun 24 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
python3 中时间戳、时间、日期的转换和加减操作
Jul 14 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
Python爬取酷狗MP3音频的步骤
Feb 26 Python
python代码实现备忘录案例讲解
Jul 26 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 Python
LeetCode189轮转数组python示例
Aug 05 Python
Python应用库大全总结
May 30 #Python
Django中反向生成models.py的实例讲解
May 30 #Python
Python RabbitMQ消息队列实现rpc
May 30 #Python
python日期时间转为字符串或者格式化输出的实例
May 29 #Python
python 集合 并集、交集 Series list set 转换的实例
May 29 #Python
使用Django启动命令行及执行脚本的方法
May 29 #Python
python3中的md5加密实例
May 29 #Python
You might like
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
jquery处理json对象
2014/11/03 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
Python实现按逗号分隔列表的方法
2018/10/23 Python
python实现列表的排序方法分享
2019/07/01 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
python3.7添加dlib模块的方法
2020/07/01 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
消防安全员岗位职责
2014/03/10 职场文书
收入证明申请书
2015/06/12 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
python实现简单的名片管理系统
2021/04/26 Python