小编Sus*_*nth的帖子

Python - 获取传感器值和风扇速度 - Windows 10

我一直在尝试使用Python脚本来显示我的硬件中的CPU,GPU和其他可用传感器的温度,但我没有找到任何有用的东西.

我尝试使用WMI来获取这些值,但我的处理器显然不受支持.

我使用的代码是:

import wmi
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
print temperature_info.CurrentTemperature
Run Code Online (Sandbox Code Playgroud)

我从另一个stackoverflow线程获得,我得到错误Traceback(最近一次调用最后):

  File "C:/Users/Joe/Desktop/test.py", line 3, in <module>
    temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
  File "C:\Python27\lib\site-packages\wmi.py", line 819, in query
    handle_com_error ()
  File "C:\Python27\lib\site-packages\wmi.py", line 241, in handle_com_error
    raise klass (com_error=err)
x_wmi: <x_wmi: Unexpected COM Error (-2147217396, 'OLE error 0x8004100c', None, None)>
Run Code Online (Sandbox Code Playgroud)

根据Microsoft支持,这意味着Not Supported (0x8004100C) 我已经尝试在cmd.exe窗口中运行此代码的命令行版本作为管理员运行,但我得到了同样的错误.

有没有其他方法可以访问CPU和GPU温度?

PS:我的操作系统是Windows 10,我的CPU是AMD FX-8350.我不确定我的操作系统或我的CPU是否有错误.

python windows cpu wmi temperature

9
推荐指数
1
解决办法
845
查看次数

将列表列表转换为字符串,并在逗号位置选择分隔符

这是列表的示例列表:

sample = [[6594, 3084, 6956, 3429], [6401, 1154, 6693, 1436], [6463, 712, 6754, 1015]]
Run Code Online (Sandbox Code Playgroud)

现在我有一个要求,字符串中不能有逗号,所以在子列表中,我必须用“:”替换逗号,两个列表之间的逗号必须用“|”替换。

最后,输出将如下所示:

"6594: 3084: 6956: 3429|6401: 1154: 6693: 1436|6463: 712: 6754: 1015"
Run Code Online (Sandbox Code Playgroud)

我尝试使用 join 方法,首先将列表列表转换为字符串:

sample = str([[6594, 3084, 6956, 3429], [6401, 1154, 6693, 1436], [6463, 712, 6754, 1015]])
final_result = "|".join(sample)
Run Code Online (Sandbox Code Playgroud)

这给了我输出字符串:

'[6594, 3084, 6956, 3429]|[6401, 1154, 6693, 1436]|[6463, 712, 6754, 1015]'
Run Code Online (Sandbox Code Playgroud)

所以这已经进行了一半。但是我不能再次应用 join 方法,因为每个数字都是一个字符串,我会得到一个看起来很有趣的输出。

我知道编写一个嵌套的 for 循环可以解决这个问题,但是有没有更优雅的方法,比如使用“join”或“map”或任何类似的方法?

注意:输出必须是如上所示的字符串格式。

python for-loop join

0
推荐指数
1
解决办法
65
查看次数

标签 统计

python ×2

cpu ×1

for-loop ×1

join ×1

temperature ×1

windows ×1

wmi ×1