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 splitlines使用技巧
Sep 06 Python
Python2.x版本中maketrans()方法的使用介绍
May 19 Python
Python实现高效求解素数代码实例
Jun 30 Python
Python对象转JSON字符串的方法
Apr 27 Python
开源软件包和环境管理系统Anaconda的安装使用
Sep 04 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
解决python报错MemoryError的问题
Jun 26 Python
Python子类继承父类构造函数详解
Feb 19 Python
python如何获取apk的packagename和activity
Jan 10 Python
在python中对于bool布尔值的取反操作
Dec 11 Python
Pandas之缺失数据的实现
Jan 06 Python
Pytorch 图像变换函数集合小结
Feb 01 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
Admin generator, filters and I18n
2011/10/06 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
几个javascript操作word的参考代码
2009/10/26 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
jQuery动态添加
2016/04/07 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
python使用arp欺骗伪造网关的方法
2015/04/24 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Scrapy框架使用的基本知识
2018/10/21 Python
python使用插值法画出平滑曲线
2018/12/15 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
python 多线程中join()的作用
2020/10/29 Python
美国性感女装网站:bebe
2017/03/04 全球购物
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
小学校园活动策划
2014/01/30 职场文书
财务会计自荐信范文
2014/02/21 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电