你应该使用check_output
,下面是我的代码成功运作。
from subprocess import check_output, CalledProcessError
from tempfile import TemporaryFile
def __getout(*args):
with TemporaryFile() as t:
try:
out = check_output(args, stderr=t)
return 0, out
except CalledProcessError as e:
t.seek(0)
return e.returncode, t.read()
# cmd is string, split with blank
def getout(cmd):
cmd = str(cmd)
args = cmd.split(' ')
return __getout(*args)
def bytes2str(bytes):
return str(bytes, encoding='utf-8')
def isAdbConnected():
cmd = 'adb devices'
(code, out) = getout(cmd)
if code != 0:
print('something is error')
return False
outstr = bytes2str(out)
if outstr == 'List of devices attached\n\n':
print('no devices')
return False
else:
print('have devices')
return True
呼叫isAdbConnected()
检查设备是否连接。希望能帮助你。
阅读[subprocess的文档](http://docs.python.org/2/library/subprocess.html#frequently-used-arguments)。将该命令作为列表传递。使用'check_output()'。 'os.system()'不可能让你输出,它只返回退出状态。 – jfs