2014-08-15 2 views
0

나는 adb를 통해 데이터베이스의 내용을 검사하는 파이썬 스크립트를 만들려고한다. 문제는 내 코드에서 첫 번째 subprocess.call() 만 실행되고 나머지는 무시된다는 것입니다. 나는 Python을 처음 접했을 때 어떻게 수정해야할지 모르겠다. 이 코드는 다음과 같습니다.adb로 파이썬 연속 서브 프로세스 호출

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

오류는 발생하지 않지만 내 에뮬레이터에서는 루트로 입력하기 만하면됩니다.

[email protected]:/ # 

답변

1

당신은 ADB 쉘로 당신을 떨어질 root 기능 root()를 호출합니다. 작동하지 않는 adb 쉘에서 python 명령 input을 실행하려고합니다. 링크의 몇 당신이 원하는 것을 할 수 있도록

: 빠른 응답

runpythonfromshell

sl4a

+0

들으. 내가 참조. 내가 원하는 것을 성취 할 수있는 방법이 있을까, 아니면 불가능한 것이 있습니까? –

+0

괜찮을 수도 있습니다. 왜 파이썬 셸에서이 모든 것을 실행하지 않으시겠습니까? –

+0

adb에서 python 명령을 실행하여 파이썬 쉘을 시작할 수 있습니다. –

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)]) 
관련 문제