51Testing软件测试论坛

标题: python中使用Popen.communicate返回一个错误的元组 [打印本页]

作者: 测试积点老人    时间: 2021-3-26 11:10
标题: python中使用Popen.communicate返回一个错误的元组
python中使用Popen.communicate返回一个错误的元组,求各位大神帮忙看看这是什么情况,该怎么改

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

  5. def get_apk_pkg():
  6.         cmd = "aapt dump badging " + apkpath + " | grep package:"
  7.         result = ""
  8.         p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
  9.                              stderr=subprocess.PIPE,
  10.                              stdin=subprocess.PIPE, shell=True)
  11.         print(p.communicate())
  12.         (output, err) = p.communicate()
  13.         if output != "":
  14.             result = output.split()[1].decode()[6:-1]
  15.             print(result)
  16.         return result
  17. print(get_apk_pkg())
复制代码
程序目的是想用appt dump badging 命令解析apk,拿到apk的包名
运行代码时,打印的p.communicate()是这样的:
  1. (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
把grep换成find试一下
作者: jingzizx    时间: 2021-3-29 19:02





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2