Hvordan kan jeg læse systemoplysninger i Python på Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Ud fra dette OS-agnostiske spørgsmål, hvordan kan jeg læse systemoplysninger fra Windows ved hjælp af Python (herunder, men ikke begrænset til, hukommelsesbrug).

Bedste reference


Der var et lignende spørgsmål:


Sådan får du den aktuelle CPU og RAM brug i Python?


Der er et par svar, der fortæller dig, hvordan du opnår dette i Windows.

Andre referencer 1


I Windows kan du bruge WMI-modulet, hvis du vil have information som fra kommandoen SYSTEMINFO. [7]


import wmi

c = wmi.WMI()    
systeminfo = c.Win32\_ComputerSystem()[0]

Manufacturer = systeminfo.Manufacturer
Model = systeminfo.Model


...


på samme måde kan os-relateret info fås fra osinfo = c.Win32\_OperatingSystem()[0]
den fulde liste over systeminfo er her og os info er her [8] [9]

Andre referencer 2


Du kan prøve at bruge systeminfo.exe wrapper jeg lavede et stykke tid tilbage, det er lidt uortodoxt, men det ser ud til at gøre tricket nemt nok og uden meget kode.


Dette skal fungere på 2000/XP/2003 Server, og skal arbejde på Vista og Win7, forudsat at de kommer med systeminfo.exe, og det er placeret på stien.


import os, re

def SysInfo():
    values  = {}
    cache   = os.popen2("SYSTEMINFO")
    source  = cache[1].read()
    sysOpts = ["Host Name", "OS Name", "OS Version", "Product ID", "System Manufacturer", "System Model", "System type", "BIOS Version", "Domain", "Windows Directory", "Total Physical Memory", "Available Physical Memory", "Logon Server"]

    for opt in sysOpts:
        values[opt] = [item.strip() for item in re.findall("\%s:w*(.*?)
" \% (opt), source, re.IGNORECASE)][0]
    return values


Du kan nemt tilføje resten af ​​datafelterne til sysOpts-variablen, undtagen dem, der giver flere linjer til deres resultater, som CPU & NIC oplysninger. Et simpelt mod til regexp-linjen skal kunne klare det.


God fornøjelse!