2010-07-16 94 views
0

下面我有下面的代碼是應該得到CPU溫度。「列表索引超出範圍」

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

當我運行它,我得到以下警告然而:

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

這是Windows 7,順便說一句。

回答

1

這只是表示TemperatureProbe未在您的機器上實現(可能是您的硬件供應商)。

您的其他選擇是連接到root \ WMI名稱空間並查詢「select * from MSAcpi_ThermalZoneTemperature」,它將返回探針,您可以查詢當前溫度爲十分之幾的開爾文。在Python的WMI中應該有一個類似的API。

更新:這裏的一些代碼工作的:

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

出於某種原因,蟒蛇似乎並不喜歡你的語法。 – rectangletangle 2010-07-17 02:26:44

+0

唯一缺少的是我添加的「import wmi」 - 我假設已經在上面的代碼中。否則,它會直接從Python終端複製/粘貼。如果你在這裏產生實際的錯誤信息,也許我可以幫你弄清楚你的問題。 – ars 2010-07-17 02:44:43