Я пытаюсь получить использование процессора моей малины Pi через программу Python.String cut в Python с странным поведением
Следующая Баш заявление отлично работает:
top -n1 | grep %Cpu
%Cpu(s): 35.6 us, 15.6 sy, 0.0 ni, 47.3 id, 0.1 wa, 0.0 hi, 1.4 si, 0.0 st
Однако, когда я пытаюсь вырезать кусок информации, мне нужно в моей программе Python, что-то странное происходит. Левый ограничитель работает отлично, однако право один делает мой результат исчезает (только пробелы возвращаются)
def get_cpu_utilization():
statement = "top -n1 | grep %Cpu"
result = check_output(statement, shell=True)
# result = result[8:] this works!
# result = result[:14] doesn't work!
#The statement below doesn't work either
result = result[8:14]
print(result)
Опять все я получаю являются заготовки ...
Что я здесь делаю неправильно?
EDITED 1:
Выполнение кода на моем Mac работает отлично:
Python 2.7.10 (v2.7.10:15c95b7d81dc, May 23 2015, 09:33:12)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> result = "%Cpu(s): 39.3 us, 15.8 sy, 0.0 ni, 43.4 id, 0.1 wa, 0.0 hi, 1.3 si, 0.0 st"
>>> print(result[8:14])
39.3
>>>
РЕДАКТИРОВАНИЕ 2:
Шаг за шагом для вас, чтобы увидеть, что происходит:
from subprocess import check_output
def get_cpu_utilization():
statement = "top -n1 | grep %Cpu"
result = check_output(statement, shell=True)
print(result)
result = result[8:]
print(result)
result = result[:6]
print(result)
result = result.strip()
print repr(result)
return result
Это то, что я получаю:
[email protected] $ sudo python cpu.py
%Cpu(s): 30.8 us, 15.2 sy, 0.0 ni, 52.6 id, 0.1 wa, 0.0 hi, 1.3 si, 0.0 st
30.8 us, 15.2 sy, 0.0 ni, 52.6 id, 0.1 wa, 0.0 hi, 1.3 si, 0.0 st
[email protected] $
Что не работает - что это ваш ожидаемый выход? Я получаю 'result [8:14] == 35.6'. – AChampion
Температура. Так же, как и вы. – Bob
Можете ли вы попробовать проверить объект «результат», прежде чем разрезать его? – jianweichuah