Android 使用adb的Python连续子进程调用

Android 使用adb的Python连续子进程调用,android,python,adb,Android,Python,Adb,我试图制作一个python脚本,通过adb检查数据库的内容。问题是,在我的代码中,只有第一个子流程.call()被执行,其余的被忽略。由于我对Python相当陌生,我不知道如何修复它。代码如下: import subprocess def root(): subprocess.call('adb shell',shell=True) x=input('Enter package name: ') openSql(x) def openSql(x): subp

我试图制作一个python脚本,通过adb检查数据库的内容。问题是,在我的代码中,只有第一个子流程.call()被执行,其余的被忽略。由于我对Python相当陌生,我不知道如何修复它。代码如下:

import subprocess

def root():
    subprocess.call('adb shell',shell=True)
    x=input('Enter package name: ')
    openSql(x)


def openSql(x):
    subprocess.call('cd data/data/%s/databases/'%(x),shell=True)
    table=input('Enter table name: ')
    openTable(table)

def openTable(table):
    subprocess.call('sqlite3 table',shell=True)
    subprocess.call('select * from %s'%(table),shell=True)

root()
它没有给出任何错误,但它只是在我的模拟器中输入root,其他什么都没有

root@android:/ # 

调用
root
函数
root()
,将您放入adb外壳中。您试图从adb shell运行一个
python
命令
input
,但该命令无效

有几个链接可帮助您完成所需操作:


Thx用于快速响应。我懂了。有什么方法可以实现我想要的或不可能的?有可能好吧,为什么不从python shell运行所有这些?可以从adb运行python命令来启动python shell。我有点困惑。我打开
idle
进入python shell(假设这就是你的意思),然后呢?如果我运行
subprocess.call('adb shell',shell=True)
在退出
root@android:/#
哦,我刚刚看到你的编辑和链接。我一定要检查一下。谢谢你的信息。
import subprocess

p=input('Enter package name: ')
d=input('Enter database name: ')
t=input('Enter table name: ')
print subprocess.check_output(["adb", "shell", "sqlite3 /data/data/{}/databases/{}.db 'select * from {};'".format(p, d, t)])