使用adb进行Python连续子进程调用

时间:2014-08-15 08:59:23

标签: android python adb

我正在尝试创建一个python脚本来通过adb检查数据库的内容。问题是在我的代码中,只执行了第一个subprocess.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:/ # 

2 个答案:

答案 0 :(得分:1)

您调用了root函数root(),这会让您进入adb shell。您正尝试从adb shell运行python命令input,这将无效。

一些帮助您做到所需的链接:

runpythonfromshell

sl4a

答案 1 :(得分:0)

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)])