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'';这明显不对啊,调试了好久都没解决
请大神们帮忙看看,解答一下,万分感谢
把grep换成find试一下 ;P
页:
[1]