测试积点老人 发表于 2021-3-26 11:10:00

python中使用Popen.communicate返回一个错误的元组

python中使用Popen.communicate返回一个错误的元组,求各位大神帮忙看看这是什么情况,该怎么改

代码如下:
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)
apkpath = PATH("../appiumnautomaster/img/YYHL_Android_V1_2_5_ver_d0505.apk")

def get_apk_pkg():
      cmd = "aapt dump badging " + apkpath + " | grep package:"
      result = ""
      p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE,
                           stdin=subprocess.PIPE, shell=True)
      print(p.communicate())
      (output, err) = p.communicate()
      if output != "":
            result = output.split().decode()
            print(result)
      return result
print(get_apk_pkg())程序目的是想用appt dump badging 命令解析apk,拿到apk的包名
运行代码时,打印的p.communicate()是这样的:
(b'', b"'aapt' \xb2\xbb\xca\xc7\xc4\xda\xb2\xbf\xbb\xf2\xcd\xe2\xb2\xbf\xc3\xfc\xc1\xee\xa3\xac\xd2\xb2\xb2\xbb\xca\xc7\xbf\xc9\xd4\xcb\xd0\xd0\xb5\xc4\xb3\xcc\xd0\xf2\r\n\xbb\xf2\xc5\xfa\xb4\xa6\xc0\xed\xce\xc4\xbc\xfe\xa1\xa3\r\n")但是看教程返回的元组格式应该是:(stdoutdata, stderrdata);也就是说stdoutdata对应的是b'';这明显不对啊,调试了好久都没解决
请大神们帮忙看看,解答一下,万分感谢

litingting0214 发表于 2021-3-29 10:39:36

把grep换成find试一下

jingzizx 发表于 2021-3-29 19:02:53

;P
页: [1]
查看完整版本: python中使用Popen.communicate返回一个错误的元组