Мы можем использовать команду оболочки pmset
, чтобы получить параметры управления питанием компьютера Mac.
Например, чтобы найти процент заряда батареи:
pmset -g batt | grep -Eo "\d+%" | cut -d% -f1
Дает процент заряда батареи отноутбук.
Когда я запускал ту же команду в python, используя команду os.system
, она работает нормально и печатает процент заряда батареи.Проблема в том, что мы не можем получить вывод от терминала.
# This runs fine
os.system('pmset -g batt | grep -Eo "\d+%" | cut -d% -f1')
Когда я использую subprocess.check_output
, он не работает по той же команде:
# This fails
subprocess.check_output('pmset -g batt | grep -Eo "\d+%" | cut -d% -f1')
Вот моя попытка:
#!python
import subprocess
import os
# This runs fine.
cmd = "date"
returned_output = subprocess.check_output(cmd).decode("utf-8")
# print('Current date is:', returned_output)
# This runs fine.
cmd = 'pmset -g batt | grep -Eo "\d+%" | cut -d% -f1'
os.system(cmd)
# This fails
cmd = 'pmset -g batt | grep -Eo "\d+%" | cut -d% -f1'
returned_output = subprocess.check_output(cmd)
print('Battery percentage:', returned_output.decode("utf-8"))
Журнал ошибок
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pmset -g batt': '/usr/bin/pmset -g batt'
Вопрос Как заставить эту строку работать?
subprocess.check_output('pmset -g batt | grep -Eo "\d+%" | cut -d% -f1')