Python实现的读取电脑硬件信息功能示例
作者:shw800 发布时间:2023-05-13 21:36:03
本文实例讲述了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程序设计有所帮助。
来源:https://blog.csdn.net/SHW800/article/details/46439717


猜你喜欢
- Pygame的mixer 模块可以依据命令播放一个或多个声音,并且也可以将这些声音混合在一起。而获得声音需要四个步骤:一、启动mixer进程
- window.opener,是通过window.open打开子窗体的父窗体的引用。 比如在父窗体parentForm里面,通过window.
- 一下demo演示2.0中的vue-router是如何获取到不同参数的,并在地址栏中匹配不同的信息 <!DOCTYPE html>
- 一、bs4解析import requestsfrom bs4 import BeautifulSoupimport datetimeif _
- Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)
- 背景: 在phpwind站点后台添加一个名为“广告管家”(广告管家为CNZZ的一款广告投放的应用)的应用,整个“广告管家”的应用是通过ifr
- 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子
- 这个类主要解决在类型转换时,如果直接使用类型转换函数,会因为变量为空或者格式不对而导致程序报错,而这种报错在大多数情况下是允许的.例如要转换
- Frame切换在本文中,将介绍如何使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换。1、Fram
- 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。所以,在一个系统开始实施
- Python的运算符和其他语言类似(我们暂时只了解这些运算符的基本用法,方便我们展开后面的内容,高级应用暂时不介绍)数学运算>>
- drop procedure if exists pro_rep_shadow_rs; delimiter | --------------
- 简单的模型例如线性回归,LR等模型非常易于解释,但在实际应用中的效果却远远低于复杂的梯度提升树模型以及神经网络等模型。现在大部分互联网公司的
- 找到自己的mysql数据库的安装位置,如下 C:\Program Files\MySQL\MySQL Server 5.1,在它里面有个的m
- 首先 编辑views.py文件每个响应对应一个函数 函数必须返回一个响应函数必须存在一个参数 一般约定为request每个响应函数 对应一个
- 前言:MYSQL 应该是最流行了 WEB 后端数据库。虽然 NOSQL 最近越来越多的被提到,但是相信大部分架构师还是会选择 MYSQL 来
- 我们用下了asp代码简单统计了下载一个文件需要的时间:<%Function DownloadTime(intFileSize
- 前言MySQL提供了众多功能强大、方便易用的函数。使用这些函数可以极大地提高用户对数据库的管理效率。MySQL中的函数包括数学函数、字符串函
- 本文代码重点在于演示Python扩展库matplotlib.pyplot中fill_between()函数的用法。import numpy
- SQL 标准使用 CREATE TABLE 语句创建数据表;MySQL 则实现了三种创建表的方法,支持自定义表结构或者通过复制已有的表结构来