我正在尝试使用subprocess.Popen
在python中执行adb shell命令示例:需要在adb shell中执行'command'。在手动执行时,我打开命令窗口并执行如下操作。
>adb shell
#<command>
在Python中我使用如下,但过程被卡住并且不提供输出
subprocess.Popen('adb shell <command>)
尝试在命令窗口中手动执行,与python代码相同,卡住并且不提供输出
>adb shell <command>
我正在尝试在后台执行二进制文件(在命令中使用二进制文件名后跟&amp;)。
答案 0 :(得分:5)
使用子进程模块中的communic()方法找到了一种方法
procId = subprocess.Popen('adb shell', stdin = subprocess.PIPE)
procId.communicate('command1\ncommand2\nexit\n')
答案 1 :(得分:0)
使用pexpect(valueFactory)
adb="/Users/lishaokai/Library/Android/sdk/platform-tools/adb"
import pexpect
import sys, os
child = pexpect.spawn(adb + " shell")
child.logfile_send = sys.stdout
while True:
index = child.expect(["$","@",pexpect.TIMEOUT])
print index
child.sendline("ls /storage/emulated/0/")
index = child.expect(["huoshan","google",pexpect.TIMEOUT])
print index, child.before, child.after
break
答案 2 :(得分:-1)
Ankur Kabra,请尝试以下代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import subprocess
command = 'adb devices'
p = subprocess.Popen(command, shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
print 'standard output: %s \n error output: %s \n',(stdout,stderr)
您将看到错误输出。
通常它会告诉你:
/bin/sh: adb: command not found
这意味着,shell无法执行adb
命令。
因此,将adb
添加到PATH
或撰写adb
的完整路径将解决问题。
可能有所帮助。