想将我的 bash 脚本转换为 python。剧本
sensors | grep "Core"
返回一个易于解析的漂亮输出,CPU 的每个内核对应一行,如果使用读取到数组中
IFS=' ' read -r -a array <<< "$line"
T="${array[2]}"
U="${T:1:-2}"
所需的温度是数组中的第二个元素,很容易(有点)删除“+”和尾随的摄氏度符号,如上面的代码所示。
尝试使用以下代码在 python 中执行此操作
all_temps = check_output(["sensors"])
exe = Popen(['grep', 'Core'],stdout=PIPE, stdin=PIPE);
cpu_temps = exe.communicate(input=all_temps)[0];
对我来说困难在于 cpu_temps 中的数据是一堆 ascii 字节,包括特殊代码。我认为我可以使用新行作为分隔符轻松拆分数据,以便为每个 cpu 获取一行,然后使用空格拆分以获取当前温度值。这应该有效,并且基本上是我的 bash 脚本的工作方式。我也以同样的方式处理“nvidia-smi”,并以同样的方式将 ATI 温度从传感器中拉出。只是看不到如何在python中做到这一点。问题:
print(cpu_temps.split()) ---
b'Core'
b'0:'
b'+42.0\xc2\xb0C'
b'(high'
b'='
b'+84.0\xc2\xb0C,'
b'crit'
b'='
b'+100.0\xc2\xb0C)'
b'Core'
我不确定我在上面看到的是什么,并且对如何提取每个核心# 和相应的值知之甚少。可能这一切都错了,或者应该坚持使用我的 bash 脚本。当我尝试拆分时,我开始收到 str 预期的错误并且我有字节。
我在从巴什盆地到蟒蛇半岛的同一条船上。
xrandr
我不得不为我的第一个项目使用一系列wmctrl
命令grep
(仍在继续叹息)。您的解决方案是:这是你的脚本:
运行前标记为可执行文件:
chmod a+x sensors.py
很高兴回答任何问题:)