1
我正在使用mac。我正在編寫代碼以使用python2.7獲取mac的batterylevel和batterystatus。下面是我寫的代碼,但我檢查了打印輸出變量,但它是空的。output = grep.communicate()[0]獲取電池使用情況時返回null
#!/usr/bin/env python
import os
import subprocess
import psutil
def getBatteryLevel():
BATTERY_CMD = ["/usr/sbin/ioreg", "-l"]
GREP_CMD = ["/usr/bin/egrep", "Capacity|ExternalChargeCapable"]
process = subprocess.Popen(BATTERY_CMD, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
grep = subprocess.Popen(GREP_CMD, stdin=process.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
grep.wait()
output = grep.communicate()[0]
batteryStatus = output.split("\n")
maxCapacity = float(batteryStatus[1].split("=")[1].lstrip())
curCapacity = float(batteryStatus[2].split("=")[1].lstrip())
remaining = 100 * (curCapacity/maxCapacity)
print "BATTERY LEVEL : "
print remaining
getBatteryLevel()
我想是因爲我用的是Mac mini的grep的不給輸出。我用macbook pro進行測試,代碼工作正常
你可以檢查'grep.wait()'的返回碼,看看它是0還是1.'grep'可能在你的輸出中找不到這個模式。我的建議是:在Python中本地執行'grep':你只有一個子進程,調試會更容易。 –
我檢查了代碼,並且grep.wait()返回1 – AnjuT
並不奇怪:雖然沒有找到pattern,儘管沒有打印:嘗試用'print(process.stdout.read(')')替換'grep = subprocess.Popen(...' ))''獲得你的第一條命令的輸出結果。在你的問題的[編輯]中發佈。 –