利用python自动化脚本,本地push安装包到手机,自动安装应用的脚本。在此过程中,使用os.system()命令后,cmd命令窗口出现后又快速消失。
猜测与进程,或者线程有关系,查询相关命令,发现subprocess模块的communicate可将多个cmd命令在一个进程的子进程下连续执行。特记录一下,便于自己回顾。
特别感谢此篇“python怎么实行窗口输入_python如何分别向两个cmd窗口输入指令?”文章,困扰了我几天的问题迎刃而解。
手机/sdcard/下,不能有中文名称,否则gbk模式依然会报错。
# -*- encoding=utf-8 -*-
from subprocess import Popen, PIPE, STDOUT
#进入/sdcard 下,查看文件列表
#使用gbk格式代替utf-8,避免在解码过程中遇到中文文件名而报错
process = Popen(["cmd"], shell=False, stdout=PIPE, stdin=PIPE, stderr=STDOUT)
commands = ("adb shell\n"
"cd sdcard\n"
"ls\n"
)
outs, errs = process.communicate(commands.encode("gbk"))
content = [z.strip() for z in outs.decode("gbk").split("\n") if z]
print(*content,sep="\n")