2010-07-16 3 views
0

Ci-dessous j'ai le code suivant qui est censé obtenir la température du CPU."indice de liste hors plage"

import wmi 
w = wmi.WMI() 
print w.Win32_TemperatureProbe()[0].CurrentReading 

Quand je le lance je reçois l'avertissement suivant cependant:

Traceback (most recent call last): 
    File "<string>", line 244, in run_nodebug 
    File "<module1>", line 3, in <module> 
IndexError: list index out of range 

Ceci est dans Windows 7, btw.

Répondre

1

Ceci signifie simplement que TemperatureProbe n'est pas implémenté sur votre machine (probablement votre fournisseur de matériel). Votre autre option consiste à se connecter à l'espace de noms root \ WMI et à interroger "select * from MSAcpi_ThermalZoneTemperature" qui renverra les sondes et vous pourrez interroger la température actuelle en dixièmes de kelvins. Il devrait y avoir une API similaire dans WMI de python.

MISE À JOUR: Voici un code qui fonctionne:

In [18]: import wmi 

In [19]: w = wmi.WMI(namespace='root\\wmi') 

In [20]: ti = w.MSAcpi_ThermalZoneTemperature()[0] # first probe 

In [21]: ti.CurrentTemperature 
Out[21]: 3242 
+0

Pour certains python raison ne semble pas que votre syntaxe. – rectangletangle

+0

La seule chose qui manquait était "importer wmi" que j'ai ajouté - j'ai supposé que c'était déjà dans votre code posté ci-dessus. Sinon, il est copié/collé directement à partir d'un terminal python. Si vous produisez le vrai message d'erreur ici, peut-être que je peux vous aider à comprendre ce qui ne va pas de votre côté. – ars

Questions connexes