1. 程式人生 > >python讀取電腦硬體資訊

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