Getting the adb output using Python

前端 未结 3 926
夕颜
夕颜 2021-01-20 20:25

I\'m trying to get the output of a adb command using the following code:

pathCmd = \'./adb shell pm path \' + packageName


pathData = subprocess.Popen(pathC         


        
3条回答
  •  没有蜡笔的小新
    2021-01-20 20:50

    You should use check_output, below is my code which works successfully.

    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
    

    Call isAdbConnected() to check whether device is connected. Hope to help you.

提交回复
热议问题